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をどのように表示するのか教えてください。

答えて

1

listIdをlongとします。だから、使用:

long listId = intent.getLongExtra(Constants.KEY_LIST_ID, -1L);

EDIT:それは動作しませんMainDetails

 Intent intent = this.getIntent(); 
     name= intent.getStringExtra(Constants.KEY_LIST_NAME); 
     phone= intent.getStringExtra(Constants.KEY_LIST_PHONE); 
     email= intent.getStringExtra(Constants.KEY_LIST_EMAIL); 
+0

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_NAME, selectedList.getName()); intent.putExtra(Constants.KEY_LIST_PHONE, selectedList.getPhone()); intent.putExtra(Constants.KEY_LIST_EMAIL, selectedList.getEmail()); startActivity(intent); } } }); 

を、ユーザー名、電話やメールを取得するには。何も表示されないことを意味します。 – gryzek

+0

あなたの質問は明確ではありません。あなたはnull listIdを取得しますか?またはselectedList?それがnullの場合、あなたはlistIdを印刷しようとしましたか? – uguboz

+0

あなたが言ったように、listIdをMainDetailsで長く変更しました。しかし、それは問題を解決するのに役立たなかった。このMainDetailsの活動では、listViewから特定の名前、電子メール、電話を表示したいと思います。 – gryzek

関連する問題