2017-03-15 3 views
0
私は再び

リストビューデータ表示

class.csリストビューに表示されたデータを繰り返し、そのデータは、私がリストビューにスクロールダウンしlistview.Whenに多くの時間を示しているJSONを使用してリストビューをバインド

namespace HSAPP 
{ 
    class ContListViewSpecNameClass : BaseAdapter<GetSpecNames> 
    { 
     List<GetSpecNames> objList; 

     Activity objActivity; 

     public ContListViewSpecNameClass (Activity objMyAct,List<GetSpecNames> objMyList) : base() 
     { 
      this.objActivity = objMyAct; 
      this.objList = objMyList; 
     } 

     public override GetSpecNames this[int position] 
     { 
      get 
      { 
       return objList[position]; 
      } 
     } 

     public override int Count 
     { 
      get 
      { 
       return objList.Count; 
      } 
     } 

     public override long GetItemId(int position) 
     { 
      return position; 
     } 

     public override View GetView(int position, View convertView, ViewGroup parent) 
     { 
      var item = objList[position]; 
      //View objView = convertView; 

      if (convertView == null) 
      { 
       convertView = objActivity.LayoutInflater.Inflate(Resource.Layout.ContListViewSpecName, null); 
       convertView.FindViewById<TextView>(Resource.Id.tvSpecID).Text = item.SpecID; 
       convertView.FindViewById<TextView>(Resource.Id.tvSpecName).Text = item.SpecName; 
      } 
      return convertView; 
     } 
    } 
} 

activity.cs

private void BindControl_BindSpecCompleted(object sender, BindControl.BindSpecCompletedEventArgs e) 
{ 
    jsonValue = e.Result.ToString(); 

    if (jsonValue == null) 
    { 
     Toast.MakeText(this, "No Data For Bind", ToastLength.Long).Show(); 
     return; 
    } 

    try 
    { 
     JArrayValue = JArray.Parse(jsonValue); 
     list = new List<GetSpecNames>(); 
     int count = 0; 
     while (count < JArrayValue.Count) 
     { 
      GetSpecNames getSpecName = new GetSpecNames(JArrayValue[count]["SpecID"].ToString(), JArrayValue[count]["SpecName"].ToString()); 
      list.Add(getSpecName); 
      count++; 
     } 
     listView.Adapter = new ContListViewSpecNameClass(this, list); 
     listView.ItemClick += ListView_ItemClick; 
    } 
    catch (Exception ex) 
    { 
     Toast.MakeText(this, ex.ToString(), ToastLength.Long).Show(); 
    } 
} 

private void ListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e) 
{ 
    var curItem = list[e.Position]; 
    Toast.MakeText(this, curItem.SpecID + ' ' + curItem.SpecName, ToastLength.Long).Show(); 
} 

出力: -

This is 1st image

This is 2nd image when scroll down

+1

は、このトピックを参照してください。http://stackoverflow.com/questions/19019775/list-item-repeating-in-android-customized-listview – HeisenBerg

+0

公共ContListViewSpecNameClass(活動objMyAct、リスト objMyList):ベース( ) { this.objActivity = objMyAct; this.objList = objMyList; } 参考になりました –

+0

うん.....それは働いた。ありがとうございました – sagarpatre

答えて

0

私はあなたがconvertViewときconvertView != nullを更新していなかったので、そのが起こったと思います。ドキュメントから

convertView - 可能な場合は、再利用する古いビュー。注: を使用する前に、このビューがnullではなく、適切なタイプであることを確認する必要があります。このビューを変換して のデータが正しく表示されない場合、このメソッドは新しいビューを作成できます。

関連する問題