Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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可单击,并在单击后显示一些文本?_Android_Android Layout_Android Activity_Android Listview_Android Adapter - Fatal编程技术网

Android 如何使ListView可单击,并在单击后显示一些文本?

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

我正在练习ListView,并在活动中放置了一些列表项。现在我有三个列表项(三行)。我希望,一旦用户单击其中一行(假设现在这是我的第一行),他/她应该能够看到一些关于它的详细信息文本。该文本将显示在活动底部的某个位置,在ListView之外。我该怎么做? 像这样:

我正在编写此代码:

MainActivity.java:

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));
    } } );