【问题标题】:My ListView is not visible in android emulator, I have used Linear layout我的 ListView 在 android 模拟器中不可见,我使用了线性布局
【发布时间】:2018-09-01 04:23:13
【问题描述】:

我的问题是列表视图在我的 android 模拟器上不可见 下面是我的xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MyListview">


<ListView
    android:id="@+id/listview"
    android:layout_width="368dp"
    android:layout_height="495dp"
    tools:layout_editor_absoluteX="8dp"
    tools:layout_editor_absoluteY="8dp"
    tools:ignore="MissingConstraints" />
</LinearLayout>

下面是我的 string.xml 文件

<resources>
<string name="app_name">MyListView</string>
<string-array name="myarray">
    <item value="Abc"></item>
    <item value="Def"></item>
    <item value="ghi"></item>
    <item value="jkl"></item>

</string-array>

下面是 my.java 文件:

package com.example.mypc.mylistview;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import  android.widget.*;

public class MyListview extends AppCompatActivity {
ListView lv;
ArrayAdapter ad;
String []arr={"abc","def","ghi","jkl"};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_listview);

    lv=(ListView) findViewById(R.id.listview);

       ad=new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,arr);

    lv.setAdapter(ad);
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
          String []arr=getResources().getStringArray(R.array.myarray);
            String value=arr[position];
            Toast.makeText(getApplicationContext(),value,Toast.LENGTH_LONG).show();

        }
    });

}
}

下面是我的输出:

这是在数组适配器中传递数组后的输出

我的 java 文件有什么问题还是我的布局有误? 提前致谢

【问题讨论】:

    标签: android android-layout listview


    【解决方案1】:
    Simple use this in MainActivity.java
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ListView  listView=findViewById(R.id.listviewa);
    
            String [] value=getResources().getStringArray(R.array.radio_buttons);
             ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1, android.R.id.text1, value);
            listView.setAdapter(adapter);
    
    
        }
    
    //---------------------String.xml-
    
    <resources>
        <string name="app_name">YourAppName</string>
    
    
        <string-array name="radio_buttons">
            <item>ABC</item>
            <item>DEF</item>
            <item>GHX</item>
            <item>IJK</item>
        </string-array>
    </resources>
    

    【讨论】:

    • 如果遇到任何问题,请告诉我。谢谢
    • @Vishal sharma ,我在 arrayAdapter 中传递了 android.R.id.text1 ,现在我的列表是可见的,但没有显示 toast 消息,它只显示空的黑框而不是显示 toast 消息,顺便谢谢
    【解决方案2】:

    正如您在屏幕截图中看到的,一切都很好。列表视图在那里,但 android.R.layout.simple_list_item_1 的颜色是白色的,这就是它不显示的原因。你可以试试

    例如mytextview.xml

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/tv"
        android:textColor="@color/font_content"
        android:padding="5sp"
        android:layout_width="fill_parent"
        android:background="@drawable/rectgrad"
        android:singleLine="true"
        android:gravity="center"
        android:layout_height="fill_parent"/>
    

    你的 java 文件现在是:

    package com.example.mypc.mylistview;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import  android.widget.*;
    
    public class MyListview extends AppCompatActivity {
    ListView lv;
    ArrayAdapter ad;
    String []arr={"abc","def","ghi","jkl"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_listview);
    
        lv=(ListView) findViewById(R.id.listview);
    
           ad=new ArrayAdapter<String>(getApplicationContext(),R.layout.mytextview,arr);
    
        lv.setAdapter(ad);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              String []arr=getResources().getStringArray(R.array.myarray);
                String value=arr[position];
                Toast.makeText(getApplicationContext(),value,Toast.LENGTH_LONG).show();
    
            }
        });
    
    }
    }
    

    而且它确实有效。

    【讨论】:

    • 它说“不幸的是应用程序已停止”,谢谢您的建议
    • 试试这个 ad=new ArrayAdapter(getApplicationContext(),R.layout.mytextview,R.id.tv, arr);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多