2016-02-26 124 views
0

我正在下面的屏幕上的活動使用適配器如何訪問複選框顯示:通過使用底座適配器移植ListView顯示包含列表視圖

New Group screen

朋友列表。

適配器

public class Adapter_Friends_Group extends BaseAdapter { 
    private Context context; 
    private List<Bean_Friends> listBeanFriends; 
    private LayoutInflater inflater; 
    private ApiConfiguration apiConfiguration; 

    public Adapter_Friends_Group(Context context, List<Bean_Friends> listBeanFriends) { 
     this.context = context; 
     this.listBeanFriends = listBeanFriends; 
    } 

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

    @Override 
    public Object getItem(int i) { 
     return listBeanFriends.get(i); 
    } 

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

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 
     if (inflater == null) { 
      inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 
     if (view == null) { 
      view = inflater.inflate(R.layout.feed_item_friends, null); 
     } 

     //finding different views 
     ImageView pic = (ImageView) view.findViewById(R.id.friendsImage); 
     TextView txtName = (TextView) view.findViewById(R.id.nameFriends); 
     CheckBox chkFriends = (CheckBox) view.findViewById(R.id.chkFriends); 

     final Bean_Friends bean_friends = listBeanFriends.get(i); 
     String name = bean_friends.getName(); 
     String url = bean_friends.getUrl(); 
     String extension = bean_friends.getExtension(); 
     apiConfiguration = new ApiConfiguration(); 
     String api = apiConfiguration.getApi(); 
     String absolute_url = api + "/" + url + "." + extension; 

     //loading image into ImageView                                   iew 
     Picasso.with(context).load(absolute_url).error(R.drawable.default_avatar).into(pic); 

     //Setting name in the textview 
     txtName.setText(name); 

     chkFriends.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { 
       Log.e("Checkboxxxxxxxxxx", "Clicked"); 
       if (isChecked) { 
        bean_friends.setFriendSelected("true"); 
        Log.e("Checkbox", "Checked"); 
       } else { 
        bean_friends.setFriendSelected("false"); 
        Log.e("Checkbox", "UnChecked"); 
       } 
       listBeanFriends.add(bean_friends); 
      } 
     }); 
     return view; 
    } 
} 

當點擊複選框,我保存在Bean作爲真正的字符串值。

public class Bean_Friends { 
    private String name, url, extension, friendsID; 
    private String friendSelected; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getUrl() { 
     return url; 
    } 

    public void setUrl(String url) { 
     this.url = url; 
    } 

    public String getExtension() { 
     return extension; 
    } 

    public void setExtension(String extension) { 
     this.extension = extension; 
    } 

    public String getFriendsID() { 
     return friendsID; 
    } 

    public void setFriendsID(String friendsID) { 
     this.friendsID = friendsID; 
    } 

    public String getFriendSelected() { 
     return friendSelected; 
    } 

    public void setFriendSelected(String friendSelected) { 
     this.friendSelected = friendSelected; 
    } 
} 

現在包含活動列表視圖中,在要訪問其複選框上點擊頂部工具欄打勾單檢查好友的ID。

使用下面的方法上點擊單個刻度:

public void createNewGroup() { 
    Toast.makeText(NewGroupActivity.this, "clicked", Toast.LENGTH_SHORT).show(); 
    listBeanFriends = new ArrayList<>(); 
    for (int i = 0; i < listBeanFriends.size(); i++) { 
     Log.e("Loop Working", "-------------"); 
     Bean_Friends bean_friends = listBeanFriends.get(i); 
     String friendSelected = bean_friends.getFriendSelected(); 
     String friendID = bean_friends.getFriendsID(); 
     Log.e("FriendID", friendID); 
     if (friendSelected.equals("true")) { 
      Toast.makeText(NewGroupActivity.this, friendID, Toast.LENGTH_SHORT).show(); 
     } else { 
      // Toast.makeText(NewGroupActivity.this,"true",Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

但是,這是交通運輸部爲我工作。我要訪問的朋友的複選框上點擊單tick.Please幫我檢查的ID解決這個問題。

更新的代碼:

我已經做changes.Now現在是爲我工作如下。

適配器

public class Adapter_Friends_Group extends BaseAdapter { 
    private Context context; 
    public List<Bean_Friends> listBeanFriends; 
    private LayoutInflater inflater; 
    private ApiConfiguration apiConfiguration; 
    private Bean_Friends bean_friends; 


    public Adapter_Friends_Group(Context context, List<Bean_Friends> listBeanFriends) { 
     this.context = context; 
     this.listBeanFriends = listBeanFriends; 
    } 

    private class ViewHolder { 
     ImageView imageView; 
     TextView txtName; 
     CheckBox chkFriend; 
    } 

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

    @Override 
    public Object getItem(int i) { 
     return listBeanFriends.get(i); 
    } 

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

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 

     ViewHolder viewHolder = null; 
     if (inflater == null) { 
      inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 
     if (view == null) { 
      view = inflater.inflate(R.layout.feed_item_friends, null); 
      viewHolder = new ViewHolder(); 
      viewHolder.imageView = (ImageView) view.findViewById(R.id.friendsImage); 
      viewHolder.txtName = (TextView) view.findViewById(R.id.nameFriends); 
      viewHolder.chkFriend = (CheckBox) view.findViewById(R.id.chkFriends); 
      view.setTag(viewHolder); 
     } else { 
      viewHolder = (ViewHolder) view.getTag(); 
     } 

     bean_friends = listBeanFriends.get(i); 
     String name = bean_friends.getName(); 
     String url = bean_friends.getUrl(); 
     String extension = bean_friends.getExtension(); 
     apiConfiguration = new ApiConfiguration(); 
     String api = apiConfiguration.getApi(); 
     String absolute_url = api + "/" + url + "." + extension; 

     //loading image into ImageView                                   iew 
     Picasso.with(context).load(absolute_url).error(R.drawable.default_avatar).into(viewHolder.imageView); 
     //Setting name in the textview 
     viewHolder.txtName.setText(name); 
     //Setting boolean isSelected if the Checkbox is checked 
     viewHolder.chkFriend.setChecked(bean_friends.isSelected()); 
     viewHolder.chkFriend.setTag(bean_friends); 


     viewHolder.chkFriend.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       CheckBox cb = (CheckBox) view; 
       Bean_Friends bean_friends = (Bean_Friends) cb.getTag(); 
       Toast.makeText(context, "Clicked on Checkbox: " + bean_friends.getName() + " is " + cb.isChecked(), Toast.LENGTH_LONG).show(); 
       bean_friends.setIsSelected(cb.isChecked()); 
      } 
     }); 
     return view; 
    } 
} 

public class Bean_Friends { 
    private String name, url, extension, friendsID; 
    boolean isSelected; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getUrl() { 
     return url; 
    } 

    public void setUrl(String url) { 
     this.url = url; 
    } 

    public String getExtension() { 
     return extension; 
    } 

    public void setExtension(String extension) { 
     this.extension = extension; 
    } 

    public String getFriendsID() { 
     return friendsID; 
    } 

    public void setFriendsID(String friendsID) { 
     this.friendsID = friendsID; 
    } 

    public boolean isSelected() { 
     return isSelected; 
    } 

    public void setIsSelected(boolean isSelected) { 
     this.isSelected = isSelected; 
    } 
} 

方法內活動

public void createNewGroup() { 
    StringBuffer responseText = new StringBuffer(); 
    listBeanFriends = adapter_friends_group.listBeanFriends; 
    // Log.e("Size of adapter_friends", String.valueOf(adapter_friends_group.listBeanFriends.size())); 
    Log.e("Size of listbeanFriends", String.valueOf(listBeanFriends.size())); 
    for (int i = 0; i < listBeanFriends.size(); i++) { 
     Log.e("Loop Working", String.valueOf(i)); 
     Bean_Friends bean_friends = listBeanFriends.get(i); 
     String friendID = bean_friends.getFriendsID(); 
     String friendName = bean_friends.getName(); 
     Log.e("FriendsName", friendName); 
     Log.e("FriendID", friendID); 
     Log.e("FriendSelected", String.valueOf(bean_friends.isSelected())); 
     if (bean_friends.isSelected()) { 
      responseText.append("\n" + bean_friends.getName() + " " + bean_friends.getFriendsID()); 
     } 
    } 
    Toast.makeText(NewGroupActivity.this, responseText, Toast.LENGTH_SHORT).show(); 
} 
+0

()來實現? –

+0

我想你正在使用適配器列表的一面。 您正在createNewGroup()函數中重新初始化列表。 當您在createNewGroup()函數中使用列表時,首先從適配器獲取列表,因爲該列表是更新列表。 –

+0

createNewGroup()方法在包含列表視圖的NewGroupActivity類中實現。 –

回答

1

嘗試更換這個線

listBeanFriends = new ArrayList<>(); 

有:

List<Bean_Friends> listBeanFriends = new ArrayList<>(); 
    listBeanFriends = adapter.listBeanFriends; 
+0

當我顯示friendID時,它在循環內部給了我NullPointerException。當循環最後一次工作時會引發異常。假設我們在列表中有5個元素。對於第五個元素,它給了我空值。 –

+0

你會得到其他檢查的ID嗎? –

+0

是的,我正在獲取其他ID也被選中和取消選中。 –