好的,這是我遇到的問題。我正在開發一個類似於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所使用的運行活動列表。