好的,快速摘要。该应用程序打开时带有一个listView(由一个字符串数组填充),当您点击列表中的一个项目时,它会将您带到另一个listView(由字符串数组填充),其中包含与您点击的第一个项目相关联的项目。在第二个listView中,我想点击一个项目,让它显示一个textView,其中包含来自另一个字符串数组的相关项目。到目前为止我有前两个listViews工作,但无法使textView工作。我已经把头撞了两天,现在变得非常沮丧。你能帮忙吗?!
这是我的字符串xml文件:
<string-array name="topics">
<item>Idioms</item>
<item>Travel</item>
<item>Small Talk</item>
<item>Tips</item>
<item>App Data</item>
</string-array>
<string-array name="idioms">
<item>Cash Chow</item>
<item>No Spring chicken</item>
</string-array>
<string-array name="travel">
<item>Asking for Change</item>
<item>Bus and Train Schedule</item>
</string-array>
<string-array name="idioms_description">
<item>A cash cow is a blah blah blah</item>
<item>No spring chicken means blah blah blah</item>
</string-array>
<string-array name="travel_description">
<item>This is a test for Asking for change</item>
<item>This is a test for Bus and train schedules</item>
</string-array>
这是我的getIntent和我应该设置文本的地方。我把它留空了因为我到目前为止所尝试的所有内容都失败了,我只是不知道如何从所选的数组中获取正确的字符串。
public class DetailLanguagePoints extends Activity{
private int position;
private TextView mLanguagePoint;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detail_view);
mLanguagePoint = (TextView) findViewById(R.detail.languagepoints);
Bundle extras = getIntent().getExtras();
//int[] arrayIds = new int[]{R.array.idioms, R.array.travel};
position = extras.getInt("listposition");
int[] stringarrayIds = new int[]{R.array.idioms_description, R.array.travel_description};
String[] subTopics = getResources().getStringArray(stringarrayIds[position]);
String description = subTopics[position];
final String TAG = "MyActivity";
Log.d(TAG,description);
mLanguagePoint.setText(description);
}
}
我发现了null异常错误的问题,我没有在findViewById()
之后调用setcontentView()
。我做到了,它解决了问题,现在正在工作!感谢所有提出建议的人!!
答案 0 :(得分:0)
使用此代码mPosition = i.getIntExtra("listposition");
而不是mPosition = i.getIntExtra("listposition", 0);
答案 1 :(得分:0)
所以你只想将subTopics
设置为ListView?
ListView listView = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, subTopics);
listView.setAdapter(adapter);
否则,请发布您的任何logcat错误失败的方式。
答案 2 :(得分:0)
您希望在TextView中显示什么?这两个子项由新行分隔?如果是,则只需将mLanguagePoint.setText()
更改为mLanguagePoint.setText(subTopics[0] + "\n" + subTopics[1])
答案 3 :(得分:0)
首先初始化mLanguagePoint。尝试像
这样的东西然后在第二个listview上添加onItemClickListener()
public void onItemClick(AdapterView<?> arg, View view, int position,long id) {
mLanguagePoint.setText(subTopics[position]);
}