2

onClick が間違ったクラスに引っかかる理由を理解するのに苦労しています。

カスタムアダプターを使用してListView、カスタム行を膨らませています。

私のrow.xmlでは、onRowClickをonClickメソッドとコードビハインドに入れました:

public void onRowClick(View v)
{ 

     //do something;

}

アプリのフローは次のとおりです: ログイン => ListView を表示

成功した場合は Loginを呼び出しfinish()、ListView でクラスを開くインテントを呼び出します。

私の問題は、onClick が ListView クラスではなく Login クラスに引っかかることです。

コード:

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;
    }    
}

誰かが私を正しい方向に向けることができますか?

どうもありがとう。

4

1 に答える 1

2

ListView を使用する場合onItemClickListenerの代わりに使用しないでください。この問題が発生する可能性はありません。onRowClick

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