さて、ここに私が抱えている問題があります。私は、Android デバイスにある OEM に似た単純なメッセージング クライアントを開発しています。
私は現在ConversationList.java
、実際のユーザーが会話をしている人のユーザー名を含む ListView を持っています。
ConversationThread.java
特定のスレッド(ユーザー間で交換されるメッセージを保持する別の ListView を含むアクティビティ) を起動したいと考えています。
私は当初ConversationThread
、 に会話が追加されるたびに new をインスタンス化しConversationList.java
、それを配列リストに追加することを考えていました。次に、ConversationThread の ArrayList の位置を参照する ListView の onItemClick の position パラメータに基づいて、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 で使用される実行中のアクティビティのリストを作成するより良い方法があります。