2016-04-08 29 views
0

(Androidのメーカー)を変更します。行は、私はこのチュートリアルに従うことによって、マルチカラムリストビューを作成しようとしました

レコードの量が非常に多く、ビュー全体が電話機の画面を超えたときに問題が発生しました。今私がスクロールすると、行のいずれかのレコードがすべて変更されています(値が変更されています)。他の行はすべて完璧です。何が問題なの?

public class ListViewAdapters extends BaseAdapter{ 

    public ArrayList<HashMap<String, String>> list; 
    Activity activity; 
    TextView txtFirst; 
    TextView txtSecond; 
    TextView txtFourth; 

    public ListViewAdapters(Activity activity, ArrayList<HashMap<String, String>> list){ 
     super(); 
     this.activity=activity; 
     this.list=list; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return list.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 



    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     HashMap<String, String> map=list.get(position); 
     LayoutInflater inflater=activity.getLayoutInflater(); 

     if(convertView == null) 
     { 
      if(map.get(MARKED)=="no") 
      { 
      convertView=inflater.inflate(R.layout.colmn_row, null); 
      } 
      else if (map.get(MARKED)=="yes") 
      { 
      convertView=inflater.inflate(R.layout.colmn_row_clicked, null); 
      } 
      txtFirst=(TextView) convertView.findViewById(R.id.name); 
      txtSecond=(TextView) convertView.findViewById(R.id.gender); 
      txtFourth=(TextView) convertView.findViewById(R.id.status); 
     } 

     txtFirst.setText(map.get(FIRST_COLUMN)); 
     txtSecond.setText(map.get(SECOND_COLUMN)); 
     txtFourth.setText(map.get(FOURTH_COLUMN)); 

     return convertView; 
    } 

} 
+0

行がchanging..meansですがアイテムの位置を変更しますか? –

+0

その値が変更されます。 – Mike

+0

BaseAdapter –

答えて

2

このコードを試してください:

public class ListViewAdapters extends BaseAdapter { 

public ArrayList<HashMap<String, String>> list; 
Activity activity; 
TextView txtFirst; 
TextView txtSecond; 
TextView txtFourth; 

public ListViewAdapters(Activity activity, ArrayList<HashMap<String, String>> list){ 
    super(); 
    this.activity=activity; 
    this.list=list; 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return list.size(); 
} 

@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return list.get(position); 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return 0; 
} 



@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    ViewHolder holder; 
    HashMap<String, String> map=list.get(position); 
    LayoutInflater inflater=activity.getLayoutInflater(); 

    if(convertView == null) { 
     holder = new ViewHolder(); 
     if (map.get(MARKED) == "no") { 
      convertView = inflater.inflate(R.layout.colmn_row, null); 
     } else if (map.get(MARKED) == "yes") { 
      convertView = inflater.inflate(R.layout.colmn_row_clicked, null); 
     } 
     holder.txtFirst = (TextView) convertView.findViewById(R.id.name); 
     holder.txtSecond = (TextView) convertView.findViewById(R.id.gender); 
     holder.txtFourth = (TextView) convertView.findViewById(R.id.status); 

     holder.txtFirst.setText(map.get(FIRST_COLUMN)); 
     holder.txtSecond.setText(map.get(SECOND_COLUMN)); 
     holder.txtFourth.setText(map.get(FOURTH_COLUMN)); 
    }else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    return convertView; 
} 

@Override 
public int getItemViewType(int position) { 
    return position; 
} 

@Override 
public int getViewTypeCount() { 
    return getCount(); 
} 

public class ViewHolder { 
    TextView txtFirst, txtSecond,txtFourth; 

} 

}

+0

完璧、ありがとうございます。 – Mike

+0

それは私のために働いた、ありがとう – GvSharma

関連する問題