【问题标题】:ListView onitemclickListView onitemclick
【发布时间】:2011-06-12 23:34:36
【问题描述】:

我正在使用 arrayadapter 在我的列表视图中显示图片和标题和描述

lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr));*/
    m_orders = new ArrayList<Order>();

    this.m_adapter = new OrderAdapter(this, R.layout.row, m_orders);
   final ListView  lv1=(ListView)findViewById(R.id.list);
  lv1.setAdapter(this.m_adapter);
  lv1.setTextFilterEnabled(true);

现在我想通过点击获取标题

我试试这个,但它显示奇怪的字符

编辑:这是我的课:

私有类 OrderAdapter 扩展 ArrayAdapter {

    private ArrayList<Order> items;

    public OrderAdapter(Context context, int textViewResourceId, ArrayList<Order> items) {
            super(context, textViewResourceId, items);
            this.items = items;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if (v == null) {
                LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.row, null);
            }
            Order o = items.get(position);
            if (o != null) {
                    TextView tt = (TextView) v.findViewById(R.id.toptext);
                    TextView bt = (TextView) v.findViewById(R.id.bottomtext);
                    if (tt != null) {
                          tt.setText("Name: "+o.getOrderName());                            }
                    if(bt != null){
                          bt.setText("Status: "+ o.getOrderStatus());
                    }
            }
            return v;
    }
}


lv1.setOnItemClickListener(new OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> a, View v, int position, long id) {
      AlertDialog.Builder adb=new AlertDialog.Builder(ListViewExampleActivity.this);
      adb.setTitle("The Selected Item");
      //lv1.getItemAtPosition(position)
      adb.setMessage("Selected Item is = "+ lv1.getItemAtPosition(position).toString());
      adb.setPositiveButton("Ok", null);
      adb.show();
      }
      }); 

那么我如何指定要显示的项目,例如 arraylist(0,1) ... 问候...

【问题讨论】:

    标签: java android listviewitem


    【解决方案1】:

    您将两个适配器设置为相同的ListView:首先是ArrayAdapter&lt;String&gt;,然后是OrderAdapter(无论您如何定义)

    由于最后一个是OrderAdaptergetItemAtPosition (position); 检索class Order 的实例(或您在该适配器中使用的任何内容)而不是字符串。最有可能的是,该类不会覆盖toString(),因此您检索到一般的Object#toString() 响应:

     public String toString ()
    

    自:API 级别 1

    返回一个字符串,其中包含此对象的简明易读描述。鼓励子类重写此方法并提供考虑到对象类型和数据的实现。默认实现等价于以下表达式:

    getClass().getName() + '@' + Integer.toHexString(hashCode())
    

    如果您打算实现自己的 toString 方法,请参阅编写有用的 toString 方法。 返回此对象的可打印表示。

    编辑:澄清一下我的回答:问题不在监听器内部。看起来不错。您将需要研究如何设置适配器以及如何(如果)定义任何类。例如,创建您自己的 toString() 方法以返回任何有意义的字符串。

    根据您的更新:如果我没记错的话,您想要做的是:

    adb.setMessage("Selected Item is = "+ lv1.getItemAtPosition(position).getOrderName());
    

    【讨论】:

    • 感谢您的回答,实际上这是我的 orderadapter 类:
    【解决方案2】:

    而不是 lv1.getItemAtPosition(位置).toString() 尝试 a.getItemAtPosition(position).toString()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 2012-08-28
      相关资源
      最近更新 更多