私は4タブアプリケーションを持っています。 1つのタブにはリストビューがあります。アプリケーションが最初に開くと、listviewのすべてが正常です。しかし、私はタブを変更すると、リストビューの項目が重複しています。この問題を解決するにはどうすればよいですか?選択したタブ変更リストビューのアイテムが重複している
タブ3 onCreateメソッド;
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);
...
}
アダプタクラス
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;
}
}
私は私が最優先のフラグメントのライフサイクルメソッドでリストビューをクリアしなければならないと思います。しかし、どうすればいいのか分かりません。あなたのコメントを待っています。
ありがとうございます。
それは動作しますが、メモリに問題はありますか? –
各フラグメントにListViewがあれば、すでに断片化したプロジェクトがあり、オフセットの制限を20以上に設定していて、メモリの問題は発生しませんでした。メモリに問題がある場合は、他の回答の1つを試してみる必要があります。たとえば、ViewPagerからのフラグメントの追加/削除を有効にしますが、すでに読み込まれている場合はアイテムを複数回読み込まないようにしてください。 –
ありがとうございます。それは働いている。 Accualy他の答えも動作しますが、これは正しい方法です。 –