Я создаю собственный адаптер для своего представления списка. В методе getView
я установил onTouchListener
для LinearLayout
в своем пользовательском адаптере. По какой-то причине onItemClickListener
в моем списке не может работать из-за этого. Это мой код для моего пользовательского метода адаптера TransactionAdapter
:
public class TransactionAdapter extends BaseAdapter {
private LayoutInflater inflater;
private ArrayList<CTransaction> transactions;
public TransactionAdapter(Context context, ArrayList<CTransaction> transactions){
inflater = LayoutInflater.from(context);
this.transactions = transactions;
}
@Override
public int getCount() {
return transactions.size();
}
@Override
public Object getItem(int position) {
return transactions.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final View view = convertView = inflater.inflate(R.layout.detail_transaction, parent, false);
LinearLayout llBackground = (LinearLayout)convertView.findViewById(R.id.llBackground);
llBackground.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
v.setBackground(view.getResources().getDrawable(R.drawable.border_clicked));
break;
case MotionEvent.ACTION_UP:
v.setBackground(view.getResources().getDrawable(R.drawable.border));
v.performClick();
break;
case MotionEvent.ACTION_CANCEL:
v.setBackground(view.getResources().getDrawable(R.drawable.border));
break;
}
//Tried to use this but not working
view.onTouchEvent(event);
return true;
}
});
return convertView;
}
}
А это мои setAdapter
и onItemClickListener
для ListView:
lvTransaction = (ListView)findViewById(R.id.lvTransaction);
TransactionAdapter adapter = new TransactionAdapter(this, transactions);
lvTransaction.setAdapter(adapter);
lvTransaction.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
final int positionSelected = position;
AlertDialog.Builder ad = new AlertDialog.Builder(HistoryActivity.this);
//Show the AlertDialog
}
});