2017-12-16 3 views
-2

私はリストを持っています。行はコンテンツイメージとテキストとアイコンであり、行を作るアイコンの使用は重要です。アイコンをクリックすると、アイコンの色が変わります。おそらくすべてが仕事ですが、1つのアイコンをクリックすると、複数のアイコンが影響を受けます。リストビューの重複アクションですか?

私はこれが私の見解ホルダーである任意の体は私の要素に

public class ItemsList{ 
    private String imgUrl , comName ; 
    private int isStr ; 

    public ItemsList(){ 

    } 

    public ItemsList(String imgUrl,String comName,int isStr) { 
     this.imgUrl = imgUrl; 
     this.comName = comName; 
     this.isStr = isStr; 
    } 

    public String getImgUrl() { 
     return imgUrl; 
    } 

    public void setImgUrl(String imgUrl) { 
     this.imgUrl = imgUrl; 
    } 

    public String getComName() { 
     return comName; 
    } 

    public void setComName(String comName) { 
     this.comName = comName; 
    } 

    public int getIsStr() { 
     return isStr; 
    } 

    public void setIsStr(int isStr) { 
     this.isStr = isStr; 
    } 

} 

を保存する

このクラスを助けることができる、私も修正していないビューホルダークラスを使用し、問題を解決していない置く、ここでより多くの記事を参照してくださいクラス

public class ViewHolder { 
    public NetworkImageView imgInv; 
    public TextView comName; 
    public ImageView isStr; 

} 

、これが私のアダプタである

public class ListAdapter extends BaseAdapter { 

    private Activity activity; 
    private LayoutInflater inflater; 
    private List<ItemsList> itemsList; 
    ImageLoader imageLoader = AppController.getmInstance().getmImageLoader(); 

    public ListAdapter(Activity activity, List<ItemsList> itemsList) { 
     this.activity = activity; 
     this.itemsList= itemsList; 
    } 

    @Override 
    public int getCount() { 
     return itemsList.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return itemsList.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(final int position, View view, ViewGroup viewGroup) { 
     if(inflater == null){ 
      inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 
     final ViewHolder viHold ; 
     final ItemsList it; 
     if(view == null){ 
      view = inflater.inflate(R.layout.tst_list_row,null); 
      viHold = new ViewHolder(); 
      viHold.comName = view.findViewById(R.id.com_name); 
      viHold.imgInv = view.findViewById(R.id.tst_img); 
      viHold.isStr = view.findViewById(R.id.img_str); 

      view.setTag(viHold); 
     }else{ 
      viHold = (ViewHolderInv) view.getTag(); 
     } 
     if(imageLoader == null){ 
      imageLoader = AppControllerProf.getmInstance().getmImageLoader(); 
     } 

     it = itemsList.get(position); 
     viHold.comName.setText(it.getComName()); 
     viHold.imgInv.setImageUrl(Constant.URL_INV_IMG+it.getImgUrl(),imageLoader); 

     // is Stars 
     if (it.getIsStr() == 1) { 
      viHold.isStr.setImageResource(R.drawable.ic_star); 
     } else { 
      viHold.isStr.setImageResource(R.drawable.ic_star_border); 
     } 

     viHold.isStr.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (it.getIsStr() == 1) { 
        viHold.isStr.setImageDrawable(null); 
        viHold.isStr.setImageResource(R.drawable.ic_star_border); 
        it.setIsStr(0); 
       } else { 
        viHold.isStr.setImageDrawable(null); 
        viHold.isStr.setBackgroundResource(R.drawable.ic_star); 
        it.setIsStr(1); 
       } 
      } 
     }); 

     view.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

      } 
     }); 

     return view; 

    } 


} 

は、私はそれがあなたのアダプタで[OK]をクリックし、すべてだと思うリストに My活動

public class InboxActivity extends AppCompatActivity{ 
// Log tag 
    private static final String TAG = MainActivity.class.getSimpleName(); 

    private ProgressDialog pDialog; 
    private List<ItemsList> itemsList= new ArrayList<ItemsList>(); 
    private ListView listView; 
    private ListAdapter listAdapter; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_inbox); 

     inboxOnCreate(); 
    } 

    private void inboxOnCreate() { 
     listView = (ListView) findViewById(R.id.inv_list_inbox); 
     listAdapter = new ListAdapter(this, itemsList); 
     listView.setAdapter(listAdapter); 

     final int idShare = SharedPrefManager.getUserID(); 

     pDialog = new ProgressDialog(this); 
     // Showing progress dialog before making http request 
     pDialog.setMessage("Loading..."); 
     pDialog.show(); 

     Map<String, String> params = new HashMap<String, String>(); 
     params.put("id", String.valueOf(idShare)); 

     CustomRequest invReq = new CustomRequest(
       Request.Method.POST, 
       Constant.URL_INBOX, 
       params, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 

         Log.d(TAG, response.toString()); 
         hidePDialog(); 

         // Parsing json 
         for (int count = 0; count < response.length(); count++) { 
          try { 
           JSONObject obj = response.getJSONObject(count); 

           ItemsList Items = new ItemsList(); 

           Items.setImgUrl(obj.getString("com_img")); 
           Items.setComName(obj.getString("com_name")); 
           Items.setIsStr(obj.getInt("isStr")); 

           itemsList.add(Items); 

          }// end try 
          catch(JSONException e) { 
           e.printStackTrace(); 
          }// end catch 
         }//end for loop 

         // notifying list adapter about data changes 
         // so that it renders the list view with updated data 
         listAdapter.notifyDataSetChanged(); 

        } 
       } 
       , new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       hidePDialog(); 
      } 
     }); 

     AppControllerProf.getmInstance().addToRequestQueue(invReq); 

    }// end inboxOnCreate 
} 

答えて

0

を埋めるためにバレーボールのライブラリを使用しています。このアダプターを使用しているアクティビティー・クラスに問題がある可能性があります。このアダプターを使用しているアクティビティーのコードを表示できますか?

更新 あなたはview.findViewById(R.id.img_str).setImageResource(...代わりのviHold.isStr.setImageResource(...を試してみましたか?

+0

私の投稿を更新し、アクティビティを送信してください – user4450367

+0

更新された回答も –

+0

あなたの質問は不明です。しかし、このような使用を意味する場合 view.findViewById(R.id.img_str).setBackgroundResource(R.drawable.ic_star);また、私はこの方法を使用してみてください、私はまた、ビューの所有者と一緒に使用しようとすると修正されていないと何が間違っている – user4450367

関連する問題