2017-08-05 2 views
0

ペットの品種に応じて異なる画像が表示される、私のdb内のすべての登録ペットを表示するrecyclerviewを作成しました。imageViewの画像をrecyclerview内の異なるアイテムの位置に設定する方法

私の問題は、データベースにペットを登録するたびに、同じ画像が登録されたすべてのペットに表示されることです。

私がしたことは、自分のデータベースにあるペットの品種を取得し、それをそれぞれの品種の差別化のために作った文字列と比較することです。

誰にでもこれを正しい方法で実行する方法を教えてください。

は、ここに私のrecyclerview

public class db_adapter extends RecyclerView.Adapter<pet_viewholder> 
{ 
    Context data_context; 
    ArrayList<db_getItem> items; 
    public db_adapter(Context data_context, ArrayList<db_getItem> items) { 
      this.data_context=data_context; 
      this.items=items; 

    } 

    @Override 
    public pet_viewholder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.reg_view_pet, parent, false); 
     return new pet_viewholder(view, data_context, items); 
    } 
    public void add(db_getItem pet) { 
     items.add(0, pet); 
     notifyItemInserted(0); 

    } 

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

    @Override 
    public void onBindViewHolder(pet_viewholder holder, int position) { 
     holder.pet_name.setText(items.get(position).getPet_name()); 
     holder.pet_breed.setText(items.get(position).getPet_breed()); 
     holder.pet_age.setText(items.get(position).getPet_age()); 
     holder.pet_bday.setText(items.get(position).getPet_bday()); 
     holder.position=position; 

    } 
    @Override 
    public int getItemCount() { 
     return items.size(); 
    } 


} 

ための私のコードであり、ここでのペットの画像を表示するための私のViewholderためのコードです。

public class pet_viewholder extends RecyclerView.ViewHolder { 

    TextView pet_name; 
    TextView pet_breed; 
    TextView pet_age; 
    TextView pet_bday; 
    ImageView pet_image; 
    RecyclerView recyclerView; 
    ArrayList<db_getItem> arrayList; 
    db_adapter adapter; 
    Context data_context1; 
    pet_database pet_database; 
    Cursor c; 
    public pet_viewholder(final View itemView, final Context data_context1, ArrayList<db_getItem> arrayList) { 
     super(itemView); 
     this.data_context1=data_context1; 
     this.arrayList=arrayList; 
     pet_name=(TextView)itemView.findViewById(R.id.name_pet); 
     pet_breed=(TextView)itemView.findViewById(R.id.breed_pet); 
     pet_age=(TextView)itemView.findViewById(R.id.age_pet); 
     pet_bday=(TextView)itemView.findViewById(R.id.bday_pet); 
     pet_image=(ImageView) itemView.findViewById(R.id.pic_breed); 
     recyclerView=(RecyclerView)itemView.findViewById(R.id.reg_pet); 
     pet_database = new pet_database(data_context1); 
     c=pet_database.quearyData("select * from pet_registered"); 
     if (c.moveToFirst()) { 

      do { 

       String pos=c.getString(3); 
       String beagle="Beagle"; 
       String bulldog="Bull Dog"; 
       if(beagle.equals(pos)){ 
        pet_image.setImageResource(R.drawable.beagle); 

       } 
       else if(bulldog.equals(pos)){ 
        pet_image.setImageResource(R.drawable.bulldog); 
       } 
      } while (c.moveToNext()); 
     } 
    } 
} 

答えて

0

onBindViewHolder

にあなたの条件に応じてコードを実行します。onBindViewHolderは行ごとにデータを設定時間ごとに呼び出されます。

String bread = items.get(position).getPet_breed(); 

if(bread.equals("breadOne") 
{ 
    holder.pet_image.setImageResource(R.drawable.beagle); 
} 
else if(bread.equals("breadTwo") 
{ 
    pet_image.setImageResource(R.drawable.bulldog); 
} 
関連する問題