2013-04-25 50 views
1

好的,這是我遇到的問題。我正在開發一個類似於Android設備上的OEM的簡單消息客戶端。根據ListView中點擊的項目位置執行一個活動的線程

目前,我有包含與人的實際用戶參與交談的用戶名一個ListView一個ConversationList.java

我想啓動一個ConversationThread.java的特定的線程(其是包含另一ListView中保持消息用戶之間交換的活性)。

我原本以爲每次在ConversationList.java中添加一個對話後,都會實例化一個新的ConversationThread,然後將其添加到數組列表中。然後根據onItemClick上的位置參數,引用ConversationThread的ArrayList的位置,引用ConversationThread的特定「線程」。

public class ConversationList extends Activity 
{ 
ArrayList<ConversationThread> ListOfActiveThreads = new ArrayList<ConversationThread>(); 
ListView convoList; 
ArrayAdapter<String> adapter; 
ArrayList<String> ActiveConversations = new ArrayList<String>(); 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_conversation_list); 
    convoList = (ListView) findViewById(R.id.Conversations); 
    Button addConvo = (Button) findViewById(R.id.Talk); 
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, ActiveConversations); 
    convoList.setAdapter(adapter); 

    addConvo.setOnClickListener(new OnClickListener() 
    { 
     public void onClick(View v) //will add the person to be sending to to the list of active conversations 
     { 
      EditText person2add = (EditText) findViewById(R.id.Friend2Sendto); 
      String person = person2add.getText().toString(); 
ConversationThread newMessage = new ComversationThread(person); 
ListOfActiveThreads.add(newMessage); 
      adapter.add(person); 
      adapter.notifyDataSetChanged(); 
      person2add.setText("");   

     } 
    }); 

    convoList.setOnItemClickListener(new ListView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> a, View v, int i, long l) 
     { 

     Intent mainIntent = new Intent(ConversationList.this, ConversationThread.class); //this starts a new instance of the ConversationThread class each time 
     startActivity(mainIntent); 
/* Here I want to start or resume the ConversationThread.getposition(i) */ 
     } 
    }); 

} 

我的問題是,對於ConversationList.java我有一個基本的Android活動模板,用oncreate()類等。難道我使這個類實現Runnable並以某種方式使之像Java中的一個主題?還是有更好的方式來創建ListView所使用的運行活動列表。

回答

0

簡短的回答是,你沒有。使用ListFragments作爲列表,並在onItemClick之間切換。這使您可以實現接口,以便在活動和片段(或片段到片段)之間「交談」。要從UI線程獲取網絡操作或任何密集處理,請使用Loader。加載器完成後,調用您在Activity和Fragments上實現的接口回調,將結果傳遞到需要的地方。

看看活動和片段教程得到如何/時/最佳實踐更好的主意。新開發人員可能會混淆一些細微的差異。

這是關於Fragments的教程。這將給你實施上面提到的樣品:

相關問題