I am trying to create a list view using an array adapter, a run method and mutltithreading, but I'm receiving the warning "variable summary may not be initialized" on the following line: SummaryData summary = summary.get(position);
. Thanks for any help and please bare in mind I am new to Android development.
My MainActivity lookslike this:
public class MainActivity extends FragmentActivity implements OnClickListener{
...
public void updateResponse() {
runOnUiThread(new Runnable() {
@Override
public void run() {
StorylineAdapter adapter = new StorylineAdapter(MainActivity.this, R.layout.item_storyline, summary);
mEditTextResponse.setAdapter(adapter);
}
My ArrayAdapter looks like this:
public class StorylineAdapter extends ArrayAdapter<SummaryData>{
private Context context;
private Runnable runnable;
private ArrayList<SummaryData> summary;
public StorylineAdapter(Context context, int resource, ArrayList<SummaryData> objects) {
super(context, resource, objects);
this.context = context;
this.runnable = runnable;
this.summary = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.item_storyline, parent, false);
SummaryData summary = summary.get(position);
TextView tv = (TextView) view.findViewById(R.id.textView1);
tv.setText(summary.getActivity());
return view;
}
}
The problem here is that your local variable SummaryData summary
is shadowing the property this.summary
. Try renaming one of them to something else and everything will work like a charm :)