Listenelement Wiederholung in android angepasst listview

In meinem kundengebundenen Listenansicht Einzelteile wiederholen. Position des Einzelteils ist für alle Einzelteil selben. Code ist unten

ListAdapter.java-

public class ListAdapter extends BaseAdapter{ private List<String> mName; private List<Drawable> mIcon; private Context mContext; public ListAdapter(Context mContext, List<String> Name, List<Drawable> Icon) { this.mContext=mContext; this.mName=Name; this.mIcon=Icon; } @Override public int getCount() { // TODO Auto-generated method stub return mName.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(final int position, View v, ViewGroup parent) { View mLayout; TextView mText; ImageView mImage; CheckBox mCheckBox; if(v==null){ LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mLayout=new View(mContext); mLayout=(LinearLayout) inflater.inflate(R.layout.list_menu, null); mText=(TextView) mLayout.findViewById(R.id.Name); mImage=(ImageView) mLayout.findViewById(R.id.Icon); mCheckBox=(CheckBox) mLayout.findViewById(R.id.mCheckbox); mText.setText(mName.get(position)); mImage.setImageDrawable(mIcon.get(position)); mCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton check, boolean isChecked) { if(check.isChecked()){ Toast.makeText(mContext, "..."+mName.get(position)+"..."+position, Toast.LENGTH_SHORT).show(); } } }); } else{ mLayout=(View)v; } return mLayout; } } 

  • Android: sollte ein ListView Adapter Teil deiner ViewModel-Klasse sein?
  • Wie erkennt man, ob eine Listenansicht in android auf- oder abrollt?
  • Android listview faul loading
  • ListView Item shadow + benutzerdefinierte auswahl
  • Wie kann ich eine Android-Liste durch einen SimpleCursorAdapter beheben?
  • Ändern Sie den erweiterbaren Indikator in ExpandableListView
  • Setvisibility (view.visible) funktioniert nicht nach setvisibility (view.gone)
  • Listview setItemChecked funktioniert nicht
  • 5 Solutions collect form web for “Listenelement Wiederholung in android angepasst listview”

    Versuchen Sie es, Sie müssen setTag() für jede Konvertierung.

      @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder mHolder; if (convertView == null) { convertView = mInflater.inflate(R.layout.list_menu, null); mHolder = new ViewHolder(); mHolder.mText=(TextView) convertView.findViewById(R.id.appName); mHolder.mImage=(ImageView) convertView.findViewById(R.id.appIcon); mHolder.mCheckBox=(CheckBox) convertView.findViewById(R.id.mCheckbox); convertView.setTag(mHolder); } else { mHolder = (ViewHolder) convertView.getTag(); } return convertView; } private class ViewHolder { private TextView mText; private ImageView mImage; private CheckBox mCheckBox; } 

    Wenn Sie verwenden, extends BaseAdapter dann wird diese Lösung funktionieren. https://stackoverflow.com/a/28791031/4531507

    Ändern Sie Ihre getView

      LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mLayout=new View(mContext); mLayout=(LinearLayout) inflater.inflate(R.layout.list_menu, null); 

    Initialisieren Sie den Anstrich in Ihren Konstruktor. Entfernen Sie diese mLayout=new View(mContext) coz Sie aufblasen ein Layout mit mLayout=(LinearLayout) inflater.inflate(R.layout.list_menu, null)

    In deinem Konstruktor

     LayoutInflater inflater; public ListAdapter(Context mContext, List<String> Name, List<Drawable> Icon) { this.inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.mContext=mContext; this.mName=Name; this.mIcon=Icon; } 

    Verwenden Sie einen View-Halter für reibungsloses Scrollen und Leistung.

    http://developer.android.com/training/improving-layouts/smooth-scrolling.html

     @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder vh; if(convertView==null){ vh = new ViewHolder(); convertView =(LinearLayout) inflater.inflate(R.layout.list_menu, null); vh.mText=(TextView) convertView.findViewById(R.id.Name); vh.mImage=(ImageView) convertView.findViewById(R.id.Icon); vh.mCheckBox=(CheckBox) convertView.findViewById(R.id.mCheckbox); convertView.setTag(vh); } else { vh = (ViewHolder) convertView.getTag(); } vh.mText.setText(mName.get(position)); vh.mImage.setImageDrawable(mIcon.get(position)); vh.mCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton check, boolean isChecked) { if(check.isChecked()){ Toast.makeText(mContext, "..."+mName.get(position)+"..."+position, Toast.LENGTH_SHORT).show(); } } }); return convertView; } static class ViewHolder { TextView mText; ImageView mImage; CheckBox mCheckBox; } 
     // try this public class ListAdapter extends BaseAdapter { private List<String> mName; private List<Drawable> mIcon; private Context mContext; public ListAdapter(Context mContext, List<String> Name, List<Drawable> Icon) { this.mContext=mContext; this.mName=Name; this.mIcon=Icon; } @Override public int getCount() { // TODO Auto-generated method stub return mName.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(final int position, View v, ViewGroup parent) { ViewHolder holder; if(v==null){ holder = new ViewHolder(); LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v =(LinearLayout) inflater.inflate(R.layout.list_menu, null); holder.mText=(TextView) v.findViewById(R.id.Name); holder.mImage=(ImageView) v.findViewById(R.id.Icon); holder.mCheckBox=(CheckBox) v.findViewById(R.id.mCheckbox); v.setTag(holder); } else{ holder = (ViewHolder) v.getTag(); } holder.mText.setText(mName.get(position)); holder.mImage.setImageDrawable(mIcon.get(position)); holder.mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton check, boolean isChecked) { if(check.isChecked()){ Toast.makeText(mContext, "..."+mName.get(position)+"..."+position, Toast.LENGTH_SHORT).show(); } } }); v.setTag(holder); return v; } class ViewHolder{ TextView mText; ImageView mImage; CheckBox mCheckBox; } } 

    Stellen Sie sicher, dass die konvertierung nicht null ist. Also platziere alle Code nach dem if (convertView == null) {}, die sicherstellt, dass du ein convertView hast, dessen Wert nicht null ist, indem du aus dem Kontext aufblätterst.

     @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = LayoutInflater.from(context); convertView = inflater.inflate(R.layout.list_menu, parent, false); } TextView mText=(TextView) convertView.findViewById(R.id.appName); ImageView mImage=(ImageView) convertView.findViewById(R.id.appIcon); CheckBox mCheckBox=(CheckBox) convertView.findViewById(R.id.mCheckbox); mText.setText(mName.get(position)); mImage.setImageDrawable(mIcon.get(position)); return convertView; } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.