Java Can';在costum适配器中创建下面的t访问阵列
我想在创建其workk时使用数组创建listviewJava 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
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