【问题标题】:Clickable TextView inside a customized ListView自定义 ListView 内的可点击 TextView
【发布时间】:2013-03-14 17:14:55
【问题描述】:

我自己定制了ListView,每一行都有2 TextViews。

我打算让textviews 的每一行内的listview 可点击。因此,每当用户点击其中任何一个时,它都会将他重定向到其他地方。

实际上,当用户点击ListView 项目时,它会点击所有项目,而textviews 将被忽略。

总之,当我点击 ListView 项目时,我不希望 Listview 项目响应,我希望 Listview 中的 Textview 响应。

编辑:

这是我自定义视图的方式:

String[] from = {"value1", "value2"};
int[] to = {R.id.label, R.id.label2};
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, data, R.layout.rowlayout, from, to);

【问题讨论】:

  • ^ 这个。你都尝试了些什么?您是否将 OnClickListeners 添加到各个 TextView 中,或者您是否覆盖了 onListItemClick()?
  • 我还没有尝试过,我该尝试什么?
  • 您应该使用扩展 BaseAdapter 或 ArrayAdapter的 CustomAdapter 而不是 SimpleAdapter 来满足您的要求。

标签: android android-listview textview


【解决方案1】:

在您的 Adapter 类中,在 getview() 方法中,您可以像这样执行 onclick 操作

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    Holder holder = null;
    if (row  == null) {
        LayoutInflater vi = 
                (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = vi.inflate(R.layout.listitem, null);
        holder.txtTitle1 = (TextView) row.findViewById(R.id.heading1);
        holder.txtTitle2 = (TextView) row.findViewById(R.id.heading2);

        holder.txtTitle1 .setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
            }
        });

        holder.txtTitle2 .setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
            }
        });
    }
    return row;
}
/////
///////////

static class Holder {
    TextView txtTitle1;
    TextView txtTitle2;
}

【讨论】:

    【解决方案2】:
    set your TextView in your layot.xml
    
     <TextView
         android:id="@+id/YourID"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
               android:clickable="true"
    
    />
    

    然后在您的自定义适配器上

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        Holder holder = null;
        if (row  == null) {
            LayoutInflater vi = 
                    (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = vi.inflate(R.layout.youLayout, null);
            holder.txt1 = (TextView) row.findViewById(R.id.tx1);
            holder.txt2 = (TextView) row.findViewById(R.id.tx2);
    
           holder.txt1 .setOnClickListener(new OnClickListener() {
    
                public void onClick(View v) {
    //your statements            
    }
            });
    
            holder.txt2 .setOnClickListener(new OnClickListener() {
    
                public void onClick(View v) {
    //your statements
                }
            });
        }
        return row;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多