我正在使用一个自定义列表视图。当我点击listview时,我没有点击事件。
这是我的代码。
lvlList = (ListView)findViewById(R.id.lvlList);
lvlList.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> a, View v,int position, long id)
{
Toast.makeText(getBaseContext(), "Click", Toast.LENGTH_LONG).show();
}
});
lvlList.setAdapter(new OrderAdapter(getBaseContext()));
private class OrderAdapter extends BaseAdapter
{
private LayoutInflater mInflater;
public OrderAdapter(Context context)
{
mInflater = LayoutInflater.from(context);
}
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.example, null);
holder = new ViewHolder();
holder.txtTest = (TextView) convertView.findViewById(R.id.txtTest);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.txtTest.setText(Util.SampleTest.get(position));
return convertView;
}
public class ViewHolder
{
public TextView txtTets;
}
public int getCount(){return Util.SampleTest.size();}
public Object getItem(int position){return position;}
public long getItemId(int position){return position;}
}
答案 0 :(得分:19)
你需要设置
LinearLayout的自定义xml布局文件中的android:descendantFocusability="blocksDescendants"
或您使用的任何布局。 (用于定义自定义行)
这应该可以解决你的问题。因为它确实解决了我的问题。如果它解决了,请将我的帖子标记为你的答案。
您还可以参考评论here
答案 1 :(得分:5)
如果列表中有可点击的项目,则必须使用焦点才能同时接收列表项目单击事件和列表项目子项单击事件。
在列表项目创建时调用以下代码:
listItem.setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS);
在http://code.google.com/p/android/issues/detail?id=3414上找到,回答#27
答案 2 :(得分:3)
答案 3 :(得分:0)
首先,设置适配器然后在列表视图上设置单击侦听器事件。然后再试一次。
答案 4 :(得分:0)
确保您的自定义布局在成为CheckBox
之前没有TextView
。您可以使用ImageView
来履行CheckBox
功能。
答案 5 :(得分:0)
试试这个。
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.example, null);
holder = new ViewHolder();
holder.txtTest = (TextView) convertView.findViewById(R.id.txtTest);
convertView.setClickable(true);
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
}
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.txtTest.setText(Util.SampleTest.get(position));
return convertView;
}