[英]Android get Textview text on the same row of listview
我的BaseAdapter適配器內部有以下代碼:
public View getView(final int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.facebook_friends_layout, null);
TextView friendsName = (TextView)vi.findViewById(R.id.tvFacebookName); // Friends thumb
friend_image=(ImageView)vi.findViewById(R.id.ivFacebookPicture); // thumb image
song= new HashMap<String, String>();
song = data.get(position);
friendsName.setText(song.get(MyFriends.KEY_FBNAME));
//Log.i("Facebook Pangalan", ""+MyFriends.KEY_FBNAME);
FriendName = (String) friendsName.getText().toString();
FBID = song.get(MyFriends.KEY_FBID);
String fbAvatarUrl = "http://graph.facebook.com/"+ FBID +"/picture";
//Log.i("FBID", FBID);
BitmapManager.INSTANCE.loadBitmap(fbAvatarUrl, friend_image, 100,100);
Button btn=(Button)vi.findViewById(R.id.btnAdd);
if (FBID.equals(""))
{
btn.setVisibility(View.GONE);
}
else
{
btn.setVisibility(View.VISIBLE);
}
btn.setOnClickListener(new OnClickListener(){
public void onClick(View arg0) {
LOCK_BASEDATA = MyFriends.LOCK_BASEDATA;
if (LOCK_BASEDATA.equals("0"))
{
//FACEBOOK FRIENDS
Log.i("", ""+FriendName);
//AddfromFacebookFriends();
}
else if (LOCK_BASEDATA.equals("1"))
{
//MY REQUEST
//((MyFriends)context).SetMyRequest();
//Log.i("LangYa", "Langya");
}
else if (LOCK_BASEDATA.equals("2"))
{
//FRIEND REQUEST
//((MyFriends)context).SetFriendRequest();
//d2papasok
AddFriendRequest();
}
}
});
return vi;
}
每當我單擊按鈕時,我就會記錄我朋友的名字。 現在,當我單擊按鈕時,問題就開始了。 我沒有得到想要的字符串。 它是從列表視圖的另一行獲取字符串。
編輯謝謝,實際上我已經將這段代碼添加了
public void onClick(View arg0) {
LOCK_BASEDATA = MyFriends.LOCK_BASEDATA;
if (LOCK_BASEDATA.equals("0"))
{
//Object x =btn.getTag();
//String sa = x.toString();
View parentView = (View) arg0.getParent();
String textviewtext = ((TextView) parentView.findViewById(R.id.hiddentv)).getText().toString();
//FACEBOOK FRIENDS
AddfromFacebookFriends(textviewtext);
}
else if (LOCK_BASEDATA.equals("1"))
{
我只是在獲取我的父母視圖以獲取所需的textview,現在可以使用了。 不管怎么說,還是要謝謝你
您正在嘗試使用以下代碼獲取FriendName:
TextView friendsName = (TextView)vi.findViewById(R.id.tvFacebookName);
FriendName = (String) friendsName.getText().toString();
這不是您單擊的ListView項的FriendName。 它是新創建的ListView項的FriendName。 因為在getView()中,您獲得的ListView項是新創建的項。
解決此問題的一種方法是:
建議使用類似KunalK的標簽。 我不確定它是否有效...我從未嘗試過。
或另一種方式是:
onButtonClicked獲取您單擊的ListView項的Position
,並從您正在使用的ArrayList中獲取相應的Name
。
這里的Position
不是getView()中的position parameter
。 這再次給出了新創建的ListView項的位置。
使用它來獲取單擊項的實際位置:
int clickedItemPosition = yourListView.getPositionForView((View) yourButton.getParent());
您應該通過在按鈕的setTag屬性中設置“ FriendName”來實現。 並且每當您處理按鈕單擊事件時,都將使用button的getTag屬性獲取FriendName字符串。 例如:
....
btn.setTag(FriendName);
btn.setOnClickListener(new OnClickListener(){
public void onClick(View arg0) {
LOCK_BASEDATA = MyFriends.LOCK_BASEDATA;
if (LOCK_BASEDATA.equals("0"))
{
//FACEBOOK FRIENDS
Log.i("", ""+btn.getTag().toString());
//AddfromFacebookFriends();
}
else if (LOCK_BASEDATA.equals("1"))
{
//MY REQUEST
//((MyFriends)context).SetMyRequest();
//Log.i("LangYa", "Langya");
}
else if (LOCK_BASEDATA.equals("2"))
{
//FRIEND REQUEST
//((MyFriends)context).SetFriendRequest();
//d2papasok
AddFriendRequest();
}
}
});
....
可以通過使用如下的onListItemClick方法來完成從列表中獲取名稱的操作( 不是在適配器中,而是在列表中的類中):
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
TextView friendsName = (TextView)v.findViewById(R.id.tvFacebookName);
FriendName = (String) friendsName.getText().toString();
}
由於此代碼是onListItemClick
方法,因此View v
參數是您單擊的行的視圖。 一旦有了它,就可以在特定的行視圖中搜索所需的TextView,然后從中拉出字符串。
您有正確的想法,只是將其放在錯誤的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.