2015-02-24 80 views
0

嗨我想添加一个项目到列表视图。将动态项目添加到列表视图

这是我的新消息活动,我要将项目传递给我的主要活动。我不太清楚如何通过意图传递这些数据,任何帮助将不胜感激。

public class NewMessage extends ActionBarActivity { 

    EditText new_message; 
    Button post_new_message_button; 

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

     new_message = (EditText) findViewById(R.id.message_content); 
     post_new_message_button = (Button) findViewById(R.id.message_send); 


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

       TextView username = (TextView) findViewById(R.id.conversation_username2); 

       itemAdapter.add(new MessageItem(1656,"Bill Smith", "image", DateTime.now(), new_message.getText().toString())); 

       itemAdapter.notifyDataSetChanged(); 

       if (v.getId() == R.id.message_send); 
       new_message.setText(""); 

      } 
     }); 

    } 

} 

这是我的主要活动我想在

公共类MainActivity扩展ActionBarActivity数据传递{

TextView threadId; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button newMessage = (Button) findViewById(R.id.new_message_button); 


    newMessage.setOnClickListener (new View.OnClickListener(){ 

     @Override 
     public void onClick(View v){ 
      Intent newMessage = new Intent(MainActivity.this, NewMessage.class); 
      startActivity(newMessage); 
     } 

    }); 

    final ListView listView = (ListView) this.findViewById(R.id.messagingListView); 
    final ActivityAdapter itemAdapter = new ActivityAdapter(getApplicationContext(), this.MessageFeedData()); 

    listView.setAdapter(itemAdapter); 

    listView.setTextFilterEnabled(true); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
      listView.getAdapter().getItem(position); 


     } 
    }); 
} 
// Get dummy data for Activity Feed 

    public ArrayList<MessageItem> MessageFeedData() { 
     ArrayList<MessageItem> items = new ArrayList<MessageItem>(); 

     items.add(new MessageItem(1, "Bob Doe", "image", DateTime.now(), "Hello how are you?")); 
     items.add(new MessageItem(200, "John Smith", "image", DateTime.now(), "Hello what are you doing")); 


     return items; 
    } 


    class ActivityFeedTask extends AsyncTask<Integer, Void, Void> { 

     ArrayList<MessageItem> recentTracks; 


    } 


    public class ActivityAdapter extends ArrayAdapter<MessageItem> { 
     private final Context context; 
     private final ArrayList<MessageItem> items; 
     //private int currentPage = 0; 

     public ActivityAdapter(Context context, ArrayList<MessageItem> recentTrackArrayList) { 
      super(context, 0, recentTrackArrayList); 
      this.context = context; 
      this.items = recentTrackArrayList; 
     } 


     public View getView(int position, View convertView, ViewGroup parent) { 
      View rowView; 


      { 
       LayoutInflater inflater = (LayoutInflater) context 
         .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

       convertView = getLayoutInflater().inflate 
         (R.layout.message_list_item, parent, false); 

       //final MessageItem item = items.get(position); 

       rowView = convertView; 

       TextView comment2 = (TextView) rowView 
         .findViewById(R.id.messaging_username); 
       comment2.setText(items.get(position).Username); 

       ImageView comment3 = (ImageView) rowView 
         .findViewById(R.id.messaging_photo); 
       if (items.get(position).Image == null) { 
        comment3.setImageResource(R.drawable.ic_launcher); 
       } 

       TextView comment4 = (TextView) rowView 
         .findViewById(R.id.messaging_date); 
       comment4.setText(items.get(position).DateTimeStamp.toString()); 

       TextView comment5 = (TextView) rowView 
         .findViewById(R.id.messaging_string); 
       comment5.setText(items.get(position).MessageString); 


      } 
      return convertView; 
     } 

    } 

} 
+0

你打算如何储存你的信息?您至少应该将它们存储在本地的SQLite数据库中。您还可以将它们存储在服务器上的数据库中,并使用php脚本以json格式向您发送消息。 – 2015-02-24 21:23:31

+0

目前,我正在测试虚拟数据,然后将其插入api中,以便它们不会被存储。 – Sim 2015-02-24 21:24:56

+0

您将使用什么api?我认为你应该在NewMessage中使用你的API发送新消息,然后在MainActivity中使用API​​检索任何新消息,并在那里更新适配器。 – 2015-02-24 21:27:35

回答

0

,如果你只是想传递数据来回两个活动之间,也许你应该使用:

startActivityForResult(Intent intent, int requestCode) 

and

onActivityResult(int requestCode, int resultCode, Intent data) 

因此,当NewMessageActivity完成时,它可以将数据发送回主活动。