Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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
Java Can';在costum适配器中创建下面的t访问阵列_Java_Android - Fatal编程技术网

Java Can';在costum适配器中创建下面的t访问阵列

Java Can';在costum适配器中创建下面的t访问阵列,java,android,Java,Android,我想在创建其workk时使用数组创建listview String nama [] = {"Olala","bolabola","yolooo","fighter"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 但当我把它放在下面时,创建“na

我想在创建其workk时使用数组创建listview

String nama [] = {"Olala","bolabola","yolooo","fighter"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
但当我把它放在下面时,创建“nama”无法读取我的数组

public class MainActivity extends AppCompatActivity {





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

    String nama [] = {"Olala","bolabola","yolooo","fighter"};


    ListView listView = (ListView)findViewById(R.id.ListView);
    CostumAdapter costumAdapter = new CostumAdapter();
    listView.setAdapter(costumAdapter);

}
public class CostumAdapter extends BaseAdapter{
    @Override
    public int getCount() {
        return nama.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = getLayoutInflater().inflate(R.layout.arablayout,null);

        TextView textViewName = (TextView)convertView.findViewById(R.id.textview);

        textViewName.setText(nama[position]);



        return convertView;
    }

}
}
无法解析符号nama 我必须这样做,因为我会在这之后创造一个spannableString
有什么建议吗?

您必须声明一个函数,该函数可以更新适配器类中的数据,在
onCreate
方法中初始化一个列表,或者是否需要,然后调用该函数来更新适配器的数据

下面是一个例子:

public class MyActivity extends AppCompactActivity {

    List<String> myList = new ArrayList<String>();

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

        myList.add("firstString");
        myList.add("secondString");
        myList.add("thirdString");
        myList.add("fourthString");

        ListView listView = (ListView)findViewById(R.id.ListView);
        CostumAdapter costumAdapter = new CostumAdapter();
        customAdapter.updateList(myList);
        listView.setAdapter(costumAdapter);
    }

    public class CostumAdapter extends BaseAdapter{

        private List<String> myList = new ArrayList();

        public void updateList(List<String> newList) {
            this.myList = newList;
            notifyDataSetChanged();
        }

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

        @Override
        public Object getItem(int position) {
            return null;
        }

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            convertView = getLayoutInflater().inflate(R.layout.arablayout,null);

            TextView textViewName = (TextView)convertView.findViewById(R.id.textview);

            textViewName.setText(myList.get(position));

            return convertView;
        }

    }
}
公共类MyActivity扩展了AppCompactActivity{
List myList=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
添加(“第一个字符串”);
添加(“第二个字符串”);
myList.添加(“第三个字符串”);
myList.add(“第四个字符串”);
ListView ListView=(ListView)findViewById(R.id.ListView);
CostumAdapter CostumAdapter=新的CostumAdapter();
customAdapter.updateList(myList);
setAdapter(costumAdapter);
}
公共类CostumAdapter扩展BaseAdapter{
private List myList=new ArrayList();
公共无效更新列表(列表新建列表){
this.myList=newList;
notifyDataSetChanged();
}
@凌驾
public int getCount(){
返回myList.length;
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
convertView=GetLayoutFlater().充气(R.layout.arablayout,null);
TextView textViewName=(TextView)convertView.findViewById(R.id.TextView);
textViewName.setText(myList.get(position));
返回视图;
}
}
}

您应该为
customView
类创建一个构造函数,该构造函数包含一个用于传递数组的参数:-

public class MainActivity extends AppCompatActivity {

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

        String nama [] = {"Olala","bolabola","yolooo","fighter"};

        ListView listView = (ListView)findViewById(R.id.ListView);
        CostumAdapter costumAdapter = new CostumAdapter(nama);
        listView.setAdapter(costumAdapter);

}

public class CostumAdapter extends BaseAdapter{

    String[] nama;

    public CostumAdapter(String[] nama){
        this.nama = nama;
    }

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

    @Override
    public Object getItem(int position) {
        return null;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = getLayoutInflater().inflate(R.layout.arablayout,null);

        TextView textViewName = (TextView)convertView.findViewById(R.id.textview);

        textViewName.setText(nama[position]);



        return convertView;
    }

}
}

天哪,谢谢你!!我对java和android studio非常陌生:-D