2

我很难弄清楚为什么我的 onClick 会陷入错误的班级。

我有ListView一个自定义适配器并为自定义行充气。

在我的 row.xml 中,我将 onRowClick 放在了 onClick 方法中,并且在我后面的代码中:

public void onRowClick(View v)
{ 

     //do something;

}

app的流程是:Login => Show ListView

如果成功,我会调用finish()Login,然后调用 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);                      
    }

项目适配器.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;
    }    
}

有人可以指出我正确的方向吗?

非常感谢。

4

1 回答 1

2

你为什么不使用onItemClickListener而不是onRowClick使用ListView时,这个问题将没有机会发生。

getListView().setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            //do something
        }
    });
于 2012-12-14T12:45:16.503 回答