好的,我意识到这是非常基本的,但是对于它来说这是不真实的。
我拥有的是一个阵列。我想要的是当用户点击数组中的项目时,它会打开一个特定于该项目的新活动。它是一个节日列表,当您点击其中一个节日时,当您点击它时,它会打开一个活动,提供有关该节日的信息。
我不知道我在这做什么。我很确定我需要使用OnClickListener,但就是这样。
活动
package com.MADONK.LAFESTS;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;
public class Home extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, R.layout.main, Festivals));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
}
static final String[] Festivals = new String[] {
"Lake Arthur Regatta", "Contraband Days", "Iowa Rabbit Festival",
};
}
答案 0 :(得分:0)
由于您正在展开ListActivity
,因此您可以覆盖onListItemClick()
。您可以执行以下操作:获取相应的Festival
对象,并将其成员传递到Intent
,然后Intent
用于启动另一个Activity
:
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
Festival item = (Festival) l.getItemAtPosition(position);
Intent i = new Intent(v.getContext(),YourFestivalDetailActivity.class);
i.putExtra("some_attribute", item.getSomeAttribute());
startActivity(i);
}
然后在Activity
开始,这是为了显示节日详情,在上面的示例中称为YourFestivalDetailActivity
,您应该从使用的Intent
中提取节日信息开始吧:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String someAttribute = getIntent().getStringExtra("some_attribute");
}
请注意,在此示例中,我只通过String
传递一个Intent
,但知道您可以通过Intent
传递更多内容。 See the docs