这是我的代码,当我使用
时List<String> array = new ArrayList<String>();
array.add("kk");
array.add("bb");
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,array);
listView1.setAdapter(adapter);
这在我的onCreate方法中可以正常工作,但问题是我不能在一个非同义的类中'我'。用getApplicationContext()替换'this'在某些原因上不起作用,无论是在onCreate内部还是外部。
像这样ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(),android.R.layout.simple_list_item_1,array);
任何人都可以帮我找到我搜索过的问题,但无法在任何地方找到答案
由于
答案 0 :(得分:1)
我会通过内部类的构造函数中的参数传递this-pointer并将其保存在内部类字段中,如下所示 - &gt;
public class outerclass{
@Override
protected void onCreate(Bundle savedInstanceState){
//.. other stuff
innerclass ic = new innerclass(this);
//.. other stuff
}
public class innerclass{
private Context c;
public innerclass(Context c){
this.c = c;
}
}
}
答案 1 :(得分:1)
当您使用适配器将某些内容添加到列表或数组中时,您需要提醒列表(在本例中为数组)中发生了更改。调用add函数后,需要调用adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listItems);
此外,在声明适配器时,将其声明在onCreate()之外,然后在onCreate()
中分配您的值 public class MainActivity extends AppCompatActivity {
// List of array strings that will represent list items
public static ArrayList<String> listItems = new ArrayList<String>();
// Array string will handle the information stored in the listview
public static ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lView = (ListView) findViewById(R.id.list);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
listItems);
lView.setAdapter(adapter);
}
}
见下文:
listItems.add(<value>);
adapter.notifyDataSetChanged();
然后你可以打电话:
listItems.clear();
然后,如果需要,您还可以访问:
adapter.clear();
和r
希望这有帮助!
答案 2 :(得分:0)
我假设你的匿名类在你的MainActivity中。如果是这种情况,您可以这样做:
ArrayAdapter adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, array);
当你使用&#34;这个&#34;在您的匿名类中,它引用匿名内部类实例而不是外部类的实例。