Ваша забота:
я получаю одно значение из списка1 и только два значения из списка2, где
оба имеют три значения
Проблема, с которой вы сталкиваетесь, заключается в следующих местах:
private final int view1 = 0;
private final int view2 = 1;
...
public int getItemViewType(int position) {
return (position == 0) ? view1 : view2;
}
И затем вы вызываете метод getItemViewType в методе getView ():
int viewType = getItemViewType(position);
Значение позиции варьируется от 0 до количества элементов в списке минус 1. Таким образом, метод getItemViewType () всегда возвращает 0 (view1), если position = 0, и возвращает 1 (view2), если position = 1, 2 , 3 ...
Затем вы пишете:
switch (viewType) {
case view1: {
final String item = list1.get(position);
...
}
break;
case view2: {
final String item = list2.get(position);
...
}
break;
}
В case view1
это просто указывает на первый элемент в вашем списке с позицией = 0. В позиции 0 остается только 1 элемент, поэтому final String item = list1.get(position);
вызывается только один раз, поэтому он возвращает 1 значение .
В case view2
это просто указывает элементы в позиции 1, 2, 3 ... Как вы сказали, в списке 3 элемента, адаптер сгенерирует 3 элемента для представления списка и case view2
будет равно 1 и 2. Значит, final String item = list2.get(position);
вызывается дважды, поэтому возвращает 2 значения.
Я не знаю, каким будет ваш следующий шаг, потому что я не понимаю, чего вы ожидаете.
Обновление: конкретное решение:
public class AxisAdapter extends ArrayAdapter<String> {
private ArrayList<String> list1;
private ArrayList<String> list2;
private Context context;
public AxisAdapter(Context context, ArrayList<String> records,ArrayList<String> records1) {
super(context, 0);
this.context = context;
list1=records;
list2=records1;
}
@Override
public int getCount() {
return list1.size() + list2.size();
}
public int getViewTypeCount() {
return 2;
}
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
if (position < list1.size()) {
final String item = list1.get(position);
convertView = LayoutInflater.from(getContext()).inflate(R.layout.abc_layout, parent, false);
final TextView list_Txt = (TextView) convertView.findViewById(R.id.txtDef);
Button list_But = (Button) convertView.findViewById(R.id.btnCall);
list_Txt.setText(item.replaceAll("[A-Za-z]", ""));
list_But.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String number = item.replaceAll("[A-Za-z]", "");
Intent i = new Intent(Intent.ACTION_VIEW,
Uri.parse("tel:" + number));
context.startActivity(i);
}
});
}
else {
final String item = list2.get(position - list1.size());
convertView = LayoutInflater.from(getContext()).inflate(R.layout.url_layout, parent, false);
final TextView list_Txt = (TextView) convertView.findViewById(R.id.txtDetail);
Button list_But = (Button) convertView.findViewById(R.id.btnVisit);
list_Txt.setText(item.replaceAll("[A-Za-z]", ""));
list_But.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String number = item.replaceAll("[A-Za-z]", "");
Intent i = new Intent(Intent.ACTION_VIEW,Uri.parse("tel:12345"));
context.startActivity(i);
}
});
}
return convertView;
}
}