2
他のアクティビティに適切なlistItemを表示するには、setOnItemClickListenerメソッドで課題があります。私はFirebaseでこれを行います。私が持っている3つの変数(文字列):名前、電話番号、電子メールMainActivityでの私のコードの他のアクティビティでクリックされたリストビュー項目を表示する方法
スニペット:Constants.classで
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ChatMessage selectedList = adapter.getItem(position);
if(selectedList != null) {
Intent intent = new Intent(MainActivity.this, MainDetails.class);
long listId = adapter.getItemId(position);
intent.putExtra(Constants.KEY_LIST_ID, listId);
startActivity(intent);
}
}
});
KEY_LIST_ID:
public static final String KEY_LIST_ID = "LIST_ID";
このKEY_LIST_ID各itemIdを保存する必要がありますか?
ChatAdapter:
public class ChatAdapter extends ArrayAdapter<ChatMessage> {
public ChatAdapter(Context context, int resource) {
super(context, resource);
}
@Override
public ChatMessage getItem(int position) {
return super.getItem(getCount() - 1 - position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView==null){
LayoutInflater inflater = ((Activity) getContext()).getLayoutInflater();
convertView = inflater.inflate(R.layout.list_item, parent, false);
viewHolder = new ViewHolder();
viewHolder.username = (TextView) convertView.findViewById(R.id.list_item_username);
viewHolder.message = (TextView) convertView.findViewById(R.id.list_item_message);
viewHolder.email = (TextView) convertView.findViewById(R.id.list_item_email);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
ChatMessage item = getItem(position);
if(item != null) {
viewHolder.username.setText(item.getName());
viewHolder.message.setText(item.getPhone());
viewHolder.email.setText(item.getEmail());
}
return convertView;
}
private static class ViewHolder{
TextView username;
TextView message;
TextView email;
}
}
MainDetails:適切なlistItemのが表示されます活動:
private TextView detailsName, detailsPhone, detailsEmail;
private ChatMessage chatMessage;
private ListView listView;
private ChatAdapter chatAdapter;
private String listId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_details);
detailsName = (TextView) findViewById(R.id.detsName);
detailsPhone = (TextView) findViewById(R.id.detsText);
detailsEmail = (TextView) findViewById(R.id.detsEmail);
Intent intent = this.getIntent();
listId = intent.getStringExtra(Constants.KEY_LIST_ID);
}
さて、それはMainDetailsに何も表示されません。
誰かがこのアクティビティの各ListItemをどのように表示するのか教えてください。
で
: を、ユーザー名、電話やメールを取得するには。何も表示されないことを意味します。 – gryzek
あなたの質問は明確ではありません。あなたはnull listIdを取得しますか?またはselectedList?それがnullの場合、あなたはlistIdを印刷しようとしましたか? – uguboz
あなたが言ったように、listIdをMainDetailsで長く変更しました。しかし、それは問題を解決するのに役立たなかった。このMainDetailsの活動では、listViewから特定の名前、電子メール、電話を表示したいと思います。 – gryzek