Android Studio:简单的 BaseAdapter 设置失败

Android Studio: Simple BaseAdapter Setup Fail

我想使用 BaseAdapter 创建一个简单的填充 GridView,但我一直得到空列表 - 应用程序运行但没有显示视图。 以下是用于此任务的所有文件:

主要

String[] items = {"Some", "items", "to", "display"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    GridView grid = (GridView)findViewById(R.id.grid);
    final TextView text = (TextView)findViewById(R.id.text);

    MyAdapter adapter = new MyAdapter(getApplicationContext(), items);

    grid.setAdapter(adapter);

我的适配器:

LayoutInflater 充气器;

Context context;
String[] myData;

public MyAdapter(Context context, String[] myData) {
    this.context = context;
    this.myData = myData;
}

@Override
public int getCount() {
    return 0;
}

@Override
public Object getItem(int position) {
    return myData[position];
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(R.layout.grid, parent, false);
    TextView text = (TextView) convertView.findViewById(R.id.textView);
    text.setText(myData[position]);
    return convertView;
}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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="com.example.android.random.MainActivity">

    <GridView
        android:id="@+id/grid"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:verticalSpacing="40dip"
        android:horizontalSpacing="5dip"
        android:numColumns="auto_fit"
        android:columnWidth="100dip"
        android:stretchMode="columnWidth"
        android:gravity="center"
        />

</android.support.constraint.ConstraintLayout>

grid.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        />
</LinearLayout>

我无数次检查各种来源,但没能在我的代码中找到错误。如果有人看一下它并找到空 activity 的原因,那将是惊人的,因为原因可能很明显。

您的 getCount 方法总是 return 0。Return 您的 myData 数组中的元素数。

@Override
public int getCount() {
    return myData.length;
}

你可以试试这个我的朋友

public class MyAdapter extends BaseAdapter {

Context context;
String[] data;


public MyAdapter(Context context, String[] myData) {
    this.context = context;
    this.data = myData;
}


@Override
public int getCount() {
    return data.length;
}

@Override
public Object getItem(int position) {
    return data[position];
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater)
                    context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

            convertView = mInflater.inflate(R.layout.grid, null);
        }

    TextView text = (TextView) convertView.findViewById(R.id.textView);
    text.setText(data[position]);
    return convertView;

}
}