gpt4 book ai didi

java - 根据在 ListView 中单击的项目位置执行 Activity 的线程

转载 作者:行者123 更新时间:2023-12-01 04:43:13 24 4
gpt4 key购买 nike

好的,这就是我遇到的问题。我正在开发一个简单的消息客户端,类似于 Android 设备上的 OEM 客户端。

我目前有一个 ConversationList.java,其中包含一个 ListView,其中包含实际用户正在与之对话的人员的用户名。

我想启动 ConversationThread.java 的特定线程(这是一个包含另一个 ListView 的 Activity ,其中保存用户之间交换的消息)。

我最初的想法是在 ConversationList.java 中每次添加对话时实例化一个新的 ConversationThread,然后将其添加到数组列表中。然后根据 ListView 上 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 Activity 模板,带有 oncreate() 类等。我是否使该类实现 Runnable 和不知何故让它像Java中的线程一样?或者是否有更好的方法来创建 ListView 使用的正在运行的 Activity 列表。

最佳答案

简短的回答是,你不知道。使用ListFragments为您的列表并在 onItemClick 中在它们之间切换。这使您能够实现在 Activity 和 fragment (或 fragment 与 fragment )之间“对话”的接口(interface)。要从 UI 线程中获取网络操作或任何密集处理,请使用 Loader 。当加载程序完成时,调用您在 Activity 和 Fragments 上实现的接口(interface)回调,以将结果传递到需要的地方。

查看 Activity 和 Fragment 教程,更好地了解如何/何时/最佳实践。对于新开发人员来说,理解一些细微的差异可能会感到困惑。

这是关于 Fragments 的教程。这将为您提供我上面提到的实现示例:

关于java - 根据在 ListView 中单击的项目位置执行 Activity 的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16204360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com