У меня есть просмотр списка разделов, и у меня есть строка и заголовок.Заголовок показывает месяц и год, в котором строка показывает прибыль и материалы.Я создал диалоговое окно для строки, но всякий раз, когда я щелкаю по заголовку, появляется сообщение об ошибке.Как сделать заголовок недоступным для клика?
Мой класс адаптера
public class TransactionAdapter extends BaseAdapter {
ArrayList<Object> transactions;
Context c;
LayoutInflater inflater;
static final int ROW = 0;
static final int HEADER = 1;
public TransactionAdapter(Context c, ArrayList<Object> transactions){
this.c = c;
this.transactions = transactions;
}
//Get size of the Transaction ArrayList
@Override
public int getCount() {
return transactions.size();
}
//Get single transaction from the Transaction ArrayList
@Override
public Object getItem(int position) {
return transactions.get(position);
}
//Get Single transaction identifier from the Transaction ArrayList
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position){
//Check the current transaction is Transaction
if(getItem(position) instanceof ProfitTransactions){
return ROW;
}
return HEADER;
}
@Override
public int getViewTypeCount(){
return 2;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
//Type of View which is ROW(0) or HEADER(1)
int type = getItemViewType(position);
//If there is no View create it,
if (convertView == null) {
inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
switch (type) {
case ROW:
convertView = inflater.inflate(R.layout.activity_transaction_items, null);
break;
case HEADER:
convertView = inflater.inflate(R.layout.activity_transaction_header, null);
convertView.setBackgroundColor(Color.rgb(220,220,220));
default:
break;
}
}
switch (type){
case ROW:
ProfitTransactions transaction = (ProfitTransactions)getItem(position);
TextView tvDay = (TextView)convertView.findViewById(R.id.day);
TextView tvTID = (TextView)convertView.findViewById(R.id.tID);
TextView tvTotalPrice = (TextView)convertView.findViewById(R.id.totalPrice);
TextView tvTimeOrder = (TextView)convertView.findViewById(R.id.tvTime);
Log.d("transadapter","-----Test: " + Integer.parseInt(transaction.getDayOfOrder()));
tvDay.setText(transaction.getDayOfOrder()+ getDayNumberSuffix(Integer.parseInt(transaction.getDayOfOrder())));
tvTID.setText("TID: " + transaction.gettId());
tvTotalPrice.setText("+$"+String.format("%.2f", transaction.getTotalPrice()));
tvTimeOrder.setText("At: " + transaction.getTimeOfOrder());
break;
case HEADER:
String header = (String)getItem(position);
// from string to date
SimpleDateFormat inputFormat = new SimpleDateFormat("MM/yyyy");
Date date = null;
try {
date = inputFormat.parse(header);
} catch (ParseException e) {
e.printStackTrace();
}
// from date to string
SimpleDateFormat outputFormat = new SimpleDateFormat("MMM yyyy");
String dateTime = outputFormat.format(date);
TextView tvMonthYear = (TextView)convertView.findViewById(R.id.tvHeaderMonthYear);
tvMonthYear.setText(dateTime);
default:
break;
}
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ProfitTransactions transaction = (ProfitTransactions)getItem(position);
//Create the Dialog Box
AlertDialog.Builder builder = new AlertDialog.Builder(c);
//Put message in the Dialog Box
builder.setMessage("Name: " + transaction.getName() + "\n" +
"Price: " + transaction.getPrice() + "\n" +
"Quantity: " + transaction.getQuantity() + "\n" +
"Total Price: " + transaction.getTotalPrice() + "\n"
)
//If user click Yes
.setPositiveButton("Close", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
//Show the dialog after creating
AlertDialog dialog = builder.show();
}
});
return convertView;
}
}
Ожидаемый результат, который я хочу получить: хочу, чтобы заголовок, содержащий месяц и год, был не кликабельным и не отвечал ни на что.