2017-01-31 5 views
0

私の必要に応じてカスタマイズしたリストビューアダプタがあります。onclickハンドラのないlistviewアダプタアイテムを取得して変更する

私は習得しようとしていますか?

シリアル番号はすでにそれに関連付けられているImageViewのは、変更する必要があり、リストビューに存在する場合には私のアプリケーションは外部のリーダーと

1.経由のSerialNoを送信します。 2.のSerialNoが利用できない場合、それはリストビューに追加する必要がありますに(この部分が実行されます。)

今私は、リストビュー上の既存の項目でシリアル番号を確認し、そのImageViewのを変更したいです。どのように私はそれを達成するのですか?

また、特定のimageViewですべてのリストビュー項目を取得したいですか?

activity_scan.xml

<ListView 
    android:id="@+id/scan_loc_list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 
</ListView> 

activity_listview.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="82dp" 
    android:padding="@dimen/activity_horizontal_margin" 
    android:background="?android:selectableItemBackground" 
    android:orientation="vertical" 
    android:descendantFocusability="blocksDescendants" 
    > 

    <ImageView 
     android:id="@+id/scan_img_view" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:layout_centerVertical="true" 
     android:layout_alignParentStart="true"/> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_toEndOf="@+id/scan_img_view" 
     android:layout_marginStart="@dimen/activity_horizontal_margin" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/scan_serial" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#000" 
      android:textSize="18sp"/>  

    </LinearLayout> 

</RelativeLayout> 

ScanItem.Java

public class ScanItem { 

    private int imageId;  
    private String serial; 

    // Getter and Setter Methods 
    ............ 

} 

ScanAdapter.java

public class ScanAdapter extends ArrayAdapter<ScanItem> { 

    Context context; 

    public ScanViewAdapter(Context context, int resourceId,List<ScanItem> items) { 
     super(context, resourceId, items); 
     this.context = context; 
    } 

    private class ViewHolder { 
     ImageView imageView; 
     TextView txtSerial; 
    } 


    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder = null; 
     ScanItem rowItem = getItem(position); 

     LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.activity_listview, null); 
      holder = new ViewHolder(); 
      holder.txtSerial = (TextView) convertView.findViewById(R.id.scan_serial); 
      holder.imageView = (ImageView) convertView.findViewById(R.id.scan_img_view); 
      convertView.setTag(holder); 
     } else 
      holder = (ViewHolder) convertView.getTag(); 

     holder.txtSerial.setText(rowItem.getSerial()); 
     holder.imageView.setImageResource(rowItem.getImageId()); 
     return convertView; 
    } 


} 

MainActivity.java

ScanAdapter assetListAdapter = new ScanAdapter(getActivity(), R.layout.activity_listview, items); // items contains array of ScanItem objects 
ListView androidListView = (ListView) getView().findViewById(R.id.scan_loc_list); 
androidListView.setAdapter(assetListAdapter); 

答えて

0

は、私は答えをfoundout自分

int count = androidListView.getAdapter().getCount(); 

     String[] listData = new String[count]; 
     for (int i = 0; i < count; i++) { 
      ScanItem sc = (ScanItem) androidListView.getAdapter().getItem(i); 
      // sc will have all the required data 
     } 
関連する問題