Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-通过单击listview项显示textview_Android_Listview_Textview - Fatal编程技术网

Android-通过单击listview项显示textview

Android-通过单击listview项显示textview,android,listview,textview,Android,Listview,Textview,我正在创建我的第一个Android应用程序,但不幸的是我卡住了。应用程序非常简单:在起始页上有一个列表视图,其中包含以下项目: 第一组 第二组 第三组 通过单击这些项目中的任何一个,一个新页面将显示一个包含一些描述的textview元素。与您单击“第一组”项目一样,listview将隐藏,并显示一个包含“第一组说明”文本的新页面 到目前为止,我可以显示带有项目的listview,但是当我点击它们时,什么都没有发生(我想我错过了一些基本的东西,但是作为一个非常新手,我不能很容易地找到它) imp

我正在创建我的第一个Android应用程序,但不幸的是我卡住了。应用程序非常简单:在起始页上有一个列表视图,其中包含以下项目: 第一组 第二组 第三组

通过单击这些项目中的任何一个,一个新页面将显示一个包含一些描述的textview元素。与您单击“第一组”项目一样,listview将隐藏,并显示一个包含“第一组说明”文本的新页面

到目前为止,我可以显示带有项目的listview,但是当我点击它们时,什么都没有发生(我想我错过了一些基本的东西,但是作为一个非常新手,我不能很容易地找到它)

import java.util.ArrayList;
导入java.util.array;
导入android.app.Activity;
导入android.os.Bundle;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.LinearLayout;
导入android.widget.LinearLayout.LayoutParams;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.view.*;
公共类SimpleListViewActivity扩展活动{
LinearLayout.LayoutParams LayoutParams;
线性布局;
私有ListView主ListView;
专用阵列适配器列表适配器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//查找ListView资源。
mainListView=(ListView)findViewById(R.id.mainListView);
//填充组列表
String[]GROUP=getResources().getStringArray(R.array.GROUP);
ArrayList GrList=新的ArrayList();
addAll(Arrays.asList(GROUP));
//使用列表创建ArrayAdapter。
listAdapter=newarrayadapter(this,R.layout.simplerow,GrList);
//将ArrayAdapter设置为ListView的适配器。
mainListView.setAdapter(listAdapter);
ll=(线性布局)findViewById(R.id.LinearLayout);
layoutParams=新建LinearLayout.layoutParams
(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容);
mainListView.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
TextView t=(TextView)findViewById(R.id.textView1);
字符串[]DESC=getResources().getStringArray(R.array.DESC);
t、 setText(描述[位置]);
ll.addView(t);
//这一点肯定是错误的(其他人也可能是错误的)。我无法显示文本视图
}
});
}
}

谢谢您的帮助。

您是否尝试过显示toast消息或在onItemClick()方法中设置断点以验证其未被访问?我猜是这样的,您遇到了这里描述的问题之一:


我假设您的R.layout.main分别拥有一个列表视图和一个id为R.id.mainListView和R.id.LinearLayout的线性布局

示例:我遗漏了一些您需要的明显属性,如高度、宽度等

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      >
      <ListView android:id="@+id/mainListView" />
      <LinearLayout android:id="@+id/LinearLayout" />
 </RelativeLayout>

在on item click中,您所要做的就是添加一个文本视图,然后设置mainListView.setVisibility(View.INVISIBLE)和ll.setVisibility(View.VISIBLE)

如果R.layout.main没有使用RelativeLayout作为根节点,而是使用LinearLayout,则通过将Visibility设置为View.GONE(如果要隐藏),将其设置为View.Visibility(如果要显示),应该仍然能够实现相同的效果

要恢复到能够看到列表视图,我将在活动中覆盖onBackPressed(),以反转这两个项目的可见性。还要记住从线性布局中删除所有视图,以便下次选择组中的项目时,添加该项目时,该项目将是线性布局中的唯一项目

有更简单的方法来实现这一点,例如启动一个新的活动来查看下一个项目,但似乎您将所有内容都保留在一个活动中。我还考虑使用ListActivity而不是基本activity类


希望这有帮助。

首先停止使用word页面。称之为活动(让你进入Android专区)

单击发生后,启动一个新活动,如下所示:

mainListView.setOnItemClickListener(new OnItemClickListener() {

String textToPass = GrList.get(position)
Intent i = new Intent(getBaseContext(), SecondActivity.class);                      
i.putExtra("textToPass", textToPass);
startActivity(i);

}

显然,您需要定义第二个活动及其相应的布局文件。另外,在第二个活动中,查看如何从第一个活动中获取捆绑包和附加内容,以获取textToPass字符串

您的
TextView
是否可见?发布您的
XML
文件。您正在创建的layoutParams有什么问题,它们没有在您发布的代码中使用,您应该将layoutParams保留在从中检索视图的XML中。
mainListView.setOnItemClickListener(new OnItemClickListener() {

String textToPass = GrList.get(position)
Intent i = new Intent(getBaseContext(), SecondActivity.class);                      
i.putExtra("textToPass", textToPass);
startActivity(i);

}