Ich habe eine Vier-Tab-Anwendung. Eine Registerkarte hat eine Listenansicht. Wenn die Anwendung zuerst geöffnet wird, ist alles normal in der Listenansicht. Aber wenn ich Tabs ändere, dann verdoppeln ListView-Elemente. Wie kann ich dieses Problem lösen?Wenn ausgewählte Registerkarte ändern Listenansicht Elemente Duplizieren
Registerkarte 3 onCreate Method;
final List<k_lbir_c> items = new ArrayList<k_lbir_c>();
listAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
final ListView listView = (ListView) view.findViewById(R.id.listView);
adapter = new listAdapter(getActivity(),items);
listView.setAdapter(adapter);
...
}
Adapter Klasse
class listAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private List<k_lbir_c> items;
public listAdapter(Activity activity,List<k_lbir_c> items){
mInflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.items = items;
}
@Override
public int getCount() {
return this.items.size();
}
@Override
public Object getItem(int position) {
return this.items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
mViewHolder mVHolder;
if(convertView==null)
{
convertView = mInflater.inflate(R.layout.k_lbir,null);
mVHolder = new mViewHolder();
convertView.setTag(mVHolder);
}
else
{
mVHolder = (mViewHolder)convertView.getTag();
}
mVHolder.texvV = (TextView)convertView.findViewById(R.id.textView);
mVHolder.imageV = (ImageView)convertView.findViewById(R.id.k_lbir_iv);
k_lbir_c item = items.get(position);
mVHolder.texvV = tvDetails(convertView,R.id.textView,item.getIsim());
mVHolder.imageV = ivDetails(convertView,R.id.k_lbir_iv,item.getImaj());
return convertView;
}
private TextView tvDetails(View v,int ResId,String Text){
TextView textView = (TextView)v.findViewById(ResId);
textView.setText(Text);
return textView;
}
private ImageView ivDetails(View v,int ResId,Drawable image){
ImageView imageView = (ImageView)v.findViewById(ResId);
imageView.setImageDrawable(image);
return imageView;
}
private static class mViewHolder{
TextView texvV;
ImageView imageV;
}
}
ich glaube, ich Listview mit überwiegendem Fragmente leben cycling Methoden löschen muß. Aber ich weiß nicht, wie ich das machen kann. Warte auf deine Kommentare.
Vielen Dank.
es funktioniert, aber Speicherprobleme? –
Wenn Sie nur ein ListView in jedem Fragment haben, habe ich bereits ein Projekt mit Fragmenten und setzen Sie das Offset-Limit auf mehr als 20 und nie Speicherprobleme. Wenn Sie ein Speicherproblem haben, dann müssen Sie eine der anderen Antworten versuchen, so dass Sie das Hinzufügen/Entfernen von Fragment von ViewPager aktivieren, aber verhindern, dass Elemente mehr als einmal geladen werden, wenn sie bereits geladen sind –
Vielen Dank. Es funktioniert. Accualy andere Antworten funktionieren auch, aber das ist der richtige Weg. –