I 2 Layouts in 1 Listenansicht anzurufendenListenansicht Artikel sind schlurfend auf blättern, wenn zwei benutzerdefinierte Layouts in Listview genannt
One ist Linear für Textview und editText und das andere ist nur ein einzelner Spinner
Wenn jedoch Ich versuche, die Elemente im linearen Layout über das Programm (Code unten) aufzurufen, die Elemente werden jedes Mal, wenn die Liste gescrollt wird, aus der Sequenz verschoben oder verschoben.
Es wird kein Fehler angezeigt, aber irgendwie passiert dies.
Ich möchte die Liste einmal aufgerufen werden und in der Reihenfolge bleiben.
Jede Hilfe ist sehr bemerkenswert. Hier unten ist mein Code
Aktivität:
Fillup_Details.java
public class Fillup_Details extends AppCompatActivity {
private ListView listView;
Spinner spinner;
ArrayList<ListViemItems> listViemItemses;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fillup__details);
listView = (ListView) findViewById(R.id.listFillupDetails);
spinner = (Spinner) findViewById(R.id.spnrFillupDetails);
setTitle("Fill-Up Details");
loadFillupDetails();
}
public void loadFillupDetails() {
listViemItemses = new ArrayList<ListViemItems>();
ListViemItems items1 = new ListViemItems();
items1.setListItems("ListItem1");
items1.setOddoreven(0);
listViemItemses.add(items1);
ListViemItems items2 = new ListViemItems();
items2.setListItems("ListItem2");
items2.setOddoreven(0);
listViemItemses.add(items2);
//.....many more objects
ListViemItems itemspnr = new ListViemItems();
itemspnr.setSpinnerItems("Spinner1");
itemspnr.setOddoreven(1);
listViemItemses.add(itemspnr);
FillupDetailsList fillupDetailsList = new FillupDetailsList(Fillup_Details.this, listViemItemses);
listView.setAdapter(fillupDetailsList);
}
}
Adapter
FillupDetailsList.java
class FillupDetailsList extends BaseAdapter {
private static final String TAGGGG = "FillupDetailsList";
Context context;
String[] spnrItemasas =new String[]{"a","b"} ;
LayoutInflater layoutInflater =null;
View view;
ViewHolder viewHolder;
ArrayList<ListViemItems> listViemItems;
int type;
private static final int TYPE_LIST_ITEMS = 0;
private static final int TYPE_SPINNER_ITEMS= 1;
public FillupDetailsList(Context context, ArrayList<ListViemItems> listViemItems) {
super();
this.context = context;
this.listViemItems=listViemItems;
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return listViemItems.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
class ViewHolder{
Spinner spinner;
TextView txtItem;
EditText edtTextItem;
int ref;
}
@Override
public int getItemViewType(int position) {
if(listViemItems.get(position).getOddoreven()==0){
type=TYPE_LIST_ITEMS;
}else if(listViemItems.get(position).getOddoreven()==1){
type=TYPE_SPINNER_ITEMS;
}
return type;
}
@Override
public int getViewTypeCount() {
return 5;
}
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
if(convertView==null){
int type = getItemViewType(position);
Log.d(TAGGGG, "getView " + position + " " + convertView + " type = " + type);
viewHolder = new ViewHolder();
switch (type){
case TYPE_LIST_ITEMS:
convertView = layoutInflater.inflate(R.layout.fillup_details_layout,null);
viewHolder.txtItem = (TextView) convertView.findViewById(R.id.txtFillupDetails);
viewHolder.edtTextItem = (EditText) convertView.findViewById(R.id.edtFillupDetails);
viewHolder.txtItem.setText(listViemItems.get(position).getListItems());
break;
case TYPE_SPINNER_ITEMS:
ArrayList<String> as = new ArrayList<String>();
ArrayAdapter<String> adptrSpnrItem = new ArrayAdapter<String>(context, R.layout.spinner_item, spnrItemasas);
adptrSpnrItem.setDropDownViewResource(R.layout.spinner_item);
convertView = layoutInflater.inflate(R.layout.fillup_details_layout_spinner,viewGroup,false);
viewHolder.spinner = (Spinner)convertView.findViewById(R.id.spnrFillupDetails);
viewHolder.spinner.setAdapter(adptrSpnrItem);
break;
default:
break;
}
convertView.setTag(viewHolder);
}else {
viewHolder= (ViewHolder) convertView.getTag();
}
return convertView;
}
}
Offensichtlich ist es, weil Sie nichts in 'getView' tun, wenn' convertView ! = null' – Selvin
Also was schlägst du vor? @selvin –