2011-11-19 26 views
0

我是一個android編程的新手。任何人都可以解釋爲什麼我的'adapter'在我的代碼的強調部分中未解決。我的程序parent actvity首先將一些數據添加到一個數組,並將其轉換爲字符串數組使用listview。在點擊一個按鈕時,它會啓動一個輔助活動,返回一個添加到數組列表中的字符串,並且新數據應該在顯示屏上更新。無論何時我將「adapter.notifyDataSetChanged();」我收到消息「適配器」未解決。任何人都可以解釋爲什麼或者我可以做些什麼來解決它。請參閱代碼 謝謝。Android:爲什麼我的適配器無法解析?

import java.util.ArrayList; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

public class ShitActivity extends Activity { 

ArrayList<String> arrlist=new ArrayList<String>(); 
private static final int REQUEST_CODE=1; 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ListView list=(ListView)findViewById(R.id.list); 


    arrlist.add("android"); 
    arrlist.add("android"); 
    arrlist.add("iphone"); 
    arrlist.add("android"); 
    arrlist.add("Blackberry"); 
    arrlist.add("webos"); 
setButtonClickListener(); 
    String[] arr=arrlist.toArray(new String[arrlist.size()]); 
    ArrayAdapter<String> adapter=new ArrayAdapter<String>  (this,R.layout.list_item,R.id.test1,arr); 

    list.setAdapter(adapter); 


} 

private void setButtonClickListener(){ 
    Button Read1=(Button)findViewById(R.id.Read1); 
Read1.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Intent i = new Intent (ShitActivity.this,Deliverstring.class); 
     startActivityForResult(i,REQUEST_CODE); 
    } 
}); 
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode==RESULT_OK && requestCode==REQUEST_CODE){ 
    String in1=data.getStringExtra("datareturn"); 
    arrlist.add(in1); 
    ***adapter.notifyDataSetChanged();*** 
} 
}} 

回答

1

您正在onCreate中聲明您的適配器。把它放在一個函數之外,這樣它就可以用在其他地方了。

private ArrayAdapter<String> adapter; 
onCreate

adapter=new ArrayAdapter<String>  (this,R.layout.list_item,R.id.test1,arr); 

相關問題