Android 如何使ListView可单击,并在单击后显示一些文本?
我正在练习ListView,并在活动中放置了一些列表项。现在我有三个列表项(三行)。我希望,一旦用户单击其中一行(假设现在这是我的第一行),他/她应该能够看到一些关于它的详细信息文本。该文本将显示在活动底部的某个位置,在ListView之外。我该怎么做? 像这样: 我正在编写此代码: MainActivity.java:Android 如何使ListView可单击,并在单击后显示一些文本?,android,android-layout,android-activity,android-listview,android-adapter,Android,Android Layout,Android Activity,Android Listview,Android Adapter,我正在练习ListView,并在活动中放置了一些列表项。现在我有三个列表项(三行)。我希望,一旦用户单击其中一行(假设现在这是我的第一行),他/她应该能够看到一些关于它的详细信息文本。该文本将显示在活动底部的某个位置,在ListView之外。我该怎么做? 像这样: 我正在编写此代码: MainActivity.java: public class MainActivity extends ActionBarActivity { @Override protected void
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] list = {"About Company", "Home Page", "Contact"};
Adapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
ListView listView = (ListView) findViewById(R.id.listId);
listView.setAdapter((ListAdapter) adapter);
listView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String listPosition = String.valueOf(parent.getItemAtPosition(position));
/*after clicking the first row of the list show the following info :
NAME: Some name
ADDRESS: Somewhere
*/
}
}
);
}
}
公共类MainActivity扩展了ActionBarActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[]list={“关于公司”、“主页”、“联系人”};
Adapter Adapter=new ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,list);
ListView ListView=(ListView)findViewById(R.id.listId);
setAdapter((ListAdapter)适配器);
listView.setOnItemClickListener(
新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
String listPosition=String.valueOf(parent.getItemAtPosition(position));
/*单击列表的第一行后,显示以下信息:
名字:某个名字
地址:某处
*/
}
}
);
}
}
activity_main.xml:
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listId"
android:background="#f79727"
android:textFilterEnabled="false"
android:layout_marginBottom="300dp" />
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_alignBottom="@+id/listId"
android:layout_centerHorizontal="true"
android:layout_marginBottom="66dp" />
在列表视图中添加onClickListener。单击时,请设置下面的文本。尝试此操作 XML
单击Listener ListView
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position,
long id) {
String listPosition = list[position];
Toast.makeText(MainActivity .this, listPosition , Toast.LENGTH_LONG).show();
}
});
listView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(适配器视图a、视图v、内部位置、,
长id){
字符串listPosition=列表[位置];
Toast.makeText(MainActivity.this,listPosition,Toast.LENGTH_LONG.show();
}
});
将代码更改为以下内容
String[] descriptionList = {"Company's Address....", "Home Address....", "Contact no...."};
您的XML文件内容
<ListView android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listId"
android:background="#f79727"
android:textFilterEnabled="false"
android:layout_marginBottom="300dp" />
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/textview" android:layout_alignBottom="@+id/listId"
android:layout_centerHorizontal="true"
android:layout_marginBottom="66dp" />
您的ontemclick侦听器
listView.setOnItemClickListener( new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
textView.setText(descriptionList.get(position));
} } );
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、int位置、长id){
textView.setText(descriptionList.get(position));
} } );
我认为您需要好的代码工作示例和教程。一个好的链接是[将ArrayAdapter与ListView一起使用][1]
[1] :。
您要求填充列表视图,请查看扩展阵列适配器的代码。
由于要在底部写入文本,因此可以在res/layout/item_user.xml中的线性布局之外创建文本视图。这是一个简单的方法。尝试一些代码,看看你得到了什么。您必须中途参与,因为您可以在这里学到很多。定义您的布局。您可能希望将第二个
ListView
替换为一些显示信息的视图,例如一些TextView
s。完成后,您可以将这些视图刷新到您设置的OnItemClickListener
中。为什么要使用两个ListView?Jorge Moreno,这并不是我想要的。因为点击列表后,它会显示一些特定的文本:例如:“公司名称:沃尔沃;地址:某个地址”。但是现在根据你的建议,它只会从当前索引中获取值并显示为文本。Riyana希望将文本显示为标签。这里toast不起作用。Graeme,我知道如何单击按钮,但我不知道如何以及在何处定义和设置我要显示的文本。Riyana在项目单击列表中使用了正确的方法Fahim,谢谢,但是我要在何处存储或定义我要显示的文本。从这一行代码:textView.setText(listPosition);它仅显示存储在listPosition中的列表的名称。如果我想显示自定义文本呢?你不必定义它,它将从适配器中拾取,如代码所示。只需在oncreate()方法中初始化textview,即可在onitemclick方法中使用它。希望您理解ToodFahim,而不定义如何获取默认文本?因为它没有被存储在任何地方?法希姆,也许你仍然有误解。你采取措施帮助我真是太好了。但我想要的是,当用户单击列表时,textView区域将显示一些默认文本:此默认文本将是我希望自己选择的文本。好的,这是我想要的:第一步:点击第一个列表;步骤2:显示以下文本:“名称:索尼;地址:美国”。如何显示该文本?这意味着在点击列表后,应该会出现一段文本!好啊您将拥有每个listview位置的文本内容列表
textView =(TextView)findViewById(R.id.textview);
listView.setOnItemClickListener( new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
textView.setText(descriptionList.get(position));
} } );