我很难弄清楚为什么我的 onClick 被困在错误的类中。
我有一个带有自定义适配器并膨胀自定义行的 ListView
。
在我的 row.xml 中,我已将 onRowClick 放入 onClick 方法中,并且在后面的代码中我有:
public void onRowClick(View v)
{
//do something;
}
应用程序的流程是: 登录=>显示ListView
如果成功,我会在登录中调用finish()
,然后调用 Intent 以使用ListView打开类。
我的问题是 onClick 在 Login 类中捕获,而不是在 ListView 类中捕获。
代码:
public class TabComeLeave extends Activity
{
private ProgressDialog m_ProgressDialog = null;
private ArrayList<Item> m_items = null;
private ItemAdapter m_adapter;
private Runnable viewItem;
private ListView listViewItem;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_come_leave);
listViewItems = (ListView)findViewById(R.id.listViewItems);
listViewItems .setClickable(true);
fillItemList();
}
public void fillItemList()
{
m_adapter = new ItemAdapter(SystemUtil.getInstance(), R.layout.list_row_come_leave, m_Items);
listViewItems.setAdapter(m_adapter);
}
ItemAdapter.java:
public class ItemAdapter extends ArrayAdapter<Item>
{
private ArrayList<Item> items;
public ItemAdapter(Context context, int textViewResourceId, ArrayList<Item> 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)SystemUtil.getInstance().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_row_come_leave, null);
}
Item item = items.get(position);
if (item!= null)
{
TextView itemName = (TextView)v.findViewById(R.id.textViewItemName);
if (itemName != null)
{
itemName .setText(item.getitemFirstName());
}
}
return v;
}
}
有人能指出我正确的方向吗?
非常感谢。
最佳答案
使用ListView时为什么不使用onItemClickListener
而不是onRowClick
,这样就不会出现这个问题了。
getListView().setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
//do something
}
});
关于android onclick 被错误的类捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13878915/