onClickListner中的ArrayAdapter不起作用

时间:2018-07-29 11:11:12

标签: java android listview android-arrayadapter

我在这里要做的是当用户单击按钮时使用ArrayList<String>ArrayAdapter<String>显示字符串列表。我想将所有成员声明为 adapter ArrayList 列表布局全局,因为我想添加更多按钮,具有显示字符串列表的相同功能。

此代码没有错误,但是不起作用。我将Toast放在onClick中,以确保onClick正常工作。我可以看到烤面包,但看不到我想要的listView

课程文件

R.id.button_news是按钮ID。 R.layout.activity_primary_content是我在此类PrimaryContent

中使用的布局

R.layout.list_view_secondary是listView R.id.list_view所在的布局。

R.layout.list_view_secondary布局和PrimaryContent类无关,但是我想使用listView布局中的list_view_secondaryPrimaryContent显示

在这一行代码中

arrayAdapter = new ArrayAdapter<>(view.getContext(),android.R.layout.simple_list_item_1,list);我尝试将上下文view.getContext()getBaseContext()都无法使用。

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

public class PrimaryContent extends AppCompatActivity {

    private final String LOG_TAG = PrimaryContent.class.getSimpleName();

    public ListView listView;
    public ArrayList<String> arrayList;
    public ArrayAdapter<String> arrayAdapter;

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

        final LayoutInflater factory = getLayoutInflater();
        final View rootView = factory.inflate(R.layout.list_view_secondary, null);
        listView = rootView.findViewById(R.id.list_view);

        arrayList = new ArrayList<>();
        for (int i=0; i<20; i++) {
            arrayList.add("World News");
        }

        Button news = findViewById(R.id.button_news);
        news.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getBaseContext(),"Damn",Toast.LENGTH_SHORT).show();

                for (String x: arrayList) {
                    Log.v(LOG_TAG,x);
                    System.out.println();
                }
                arrayAdapter = new ArrayAdapter<>(view.getContext(),android.R.layout.simple_list_item_1,arrayList);
                listView.setAdapter(arrayAdapter);
            }
        });
    }
}

R.layout.list_view_secondary

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:drawSelectorOnTop="true"
    android:orientation="vertical" />

1 个答案:

答案 0 :(得分:0)

您忘记将膨胀后的布局添加到父布局中,例如:

public class MySteps implement En {
    public MySteps() {
        Given("a {string} is passed", (String string) {
            assertTrue(string.equals("hi");
        });
    }
}