好的,这是我遇到的问题。我正在开发一个简单的消息客户端,类似于 Android 设备上的 OEM 客户端。
我目前有一个ConversationList.java
包含与实际用户进行对话的人的用户名的 ListView。
我想启动 a 的特定线程ConversationThread.java
(这是一个包含另一个 ListView 保存用户之间交换的消息的活动)。
我最初考虑ConversationThread
在每次添加对话时实例化一个新的ConversationList.java
,然后将其添加到数组列表中。然后基于引用 ConversationThread 的 ArrayList 位置的 ListView 上的 onItemClick 上的位置参数执行 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 中的一个线程?或者有没有更好的方法来创建列表视图使用的正在运行的活动列表。