Привет, я пытаюсь создать приложение, в котором пользователь может ввести несколько чисел, и эти числа будут отображаться в виде сетки с пользовательскими элементами вида сетки.Если я использую общие элементы gridview Android, это работает.Но если я использую свой собственный макет, это не работает.Будет показан только первый элемент в массиве.У кого-нибудь есть клоч, почему это не работает?
public class GridViewAppActivity extends Activity {
private ArrayList<String> items;
private GridViewAdapter adapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
items = new ArrayList<String>();
adapter = new GridViewAdapter(this);
GridView gridView = (GridView) findViewById(R.id.gridView);
gridView.setAdapter(adapter);
final Button addButton = (Button) findViewById(R.id.add_button);
final EditText itemEditText = (EditText) findViewById(R.id.number_field);
// Click listener for Button
addButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
items.add(itemEditText.getText().toString());
itemEditText.setText("");
adapter.notifyDataSetChanged();
}
});
}
public class GridViewAdapter extends BaseAdapter {
private Context mContext;
public GridViewAdapter(Context c) {
mContext = c;
}
public int getCount() {
return items.size();
}
public Object getItem(int position) {
return items.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v;
if(convertView==null){
LayoutInflater li = getLayoutInflater();
v = li.inflate(R.layout.grid_item, null);
TextView tv = (TextView)v.findViewById(R.id.grid_item_text);
tv.setText(items.get(position));
} else {
v = convertView;
}
return v;
}
}
}