Android: почему я получаю адаптер неразрешенным? - PullRequest
0 голосов
/ 19 ноября 2011

Я новичок в программировании для Android. Кто-нибудь может объяснить, почему я не могу разрешить «адаптер» в выделенной части моего кода. Моя программа родительского actvity сначала добавляет некоторые данные в массив, который преобразуется в массив строк иотображается с использованием списка.При нажатии кнопки запускается вторичное действие, которое возвращает строку, которая добавляется в массив, и новые данные должны обновляться на дисплее. Когда бы я ни указывал «adapter.notifyDataSetChanged ();»;Я получаю сообщение «адаптер» неразрешенным. Может ли кто-нибудь объяснить, почему или что я могу сделать, чтобы решить его. См. Код спасибо.

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 Ответ

1 голос
/ 19 ноября 2011

Вы объявляете свой адаптер в onCreate. Поместите его вне функции, чтобы его можно было использовать в другом месте.

private ArrayAdapter<String> adapter;

в onCreate

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