我有一个数组列表,只要有人按下按钮,就会在数组列表中添加一个字符串。我想创建一个自定义网格视图布局,该布局显示一个圆圈,根据输入到文本框中的单词进行着色?谁能告诉我怎么做?
另外,我知道我必须创建一个扩展arrayasapter的类,但没有任何东西是自动生成的 - 但我看到在线教程显示自动生成的注释。这会让人感到困惑,那么有没有人有基本代码到数组适配器,我可以编辑自定义?谢谢!
答案 0 :(得分:0)
public class MainActivity extends Activity {
ArrayList<String> rowItems;
private GridView gridView;
private Button button;
private EditText editText;
private CustomViewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = (GridView) findViewById(R.id.gridView1);
button = (Button) findViewById(R.id.button1);
editText = (EditText) findViewById(R.id.editText1);
rowItems = new ArrayList<String>();
adapter = new CustomViewAdapter(MainActivity.this,
R.layout.activity_ma, rowItems);
gridView.setAdapter(adapter);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
rowItems.add(editText.getText().toString());
adapter.notifyDataSetChanged();
}
});
}
public class CustomViewAdapter extends ArrayAdapter<String> {
Context context;
public CustomViewAdapter(Context context, int resourceId,
ArrayList<String> items) {
super(context, resourceId, items);
this.context = context;
}
/* private view holder class */
private class ViewHolder {
TextView txtDesc;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
String rowItem = getItem(position);
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.activity_ma, null);
holder = new ViewHolder();
holder.txtDesc = (TextView) convertView.findViewById(R.id.text);
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();
holder.txtDesc.setText(rowItem);
if (position % 2 == 1) {
holder.txtDesc.setBackgroundResource(R.drawable.circleone);
} else {
holder.txtDesc.setBackgroundResource(R.drawable.circletwo);
}
return convertView;
}
}
}
这是我的活动和数组适配器。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.aaa.MainActivity" >
<GridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/button1"
android:layout_centerHorizontal="true"
android:numColumns="3" >
</GridView>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/gridView1"
android:layout_marginBottom="16dp"
android:text="Button" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_alignLeft="@+id/gridView1"
android:ems="10" >
<requestFocus />
</EditText>
这是activity activity_main.xml的布局。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.aaa.MainActiv" >
<TextView
android:id="@+id/text"
android:layout_width="80dp"
android:layout_height="80dp"
android:gravity="center"
android:text="@string/hello_world" />
这将是您的activity_ma.xml。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="@android:color/darker_gray"/>
</shape>
这将是textview背景circleone.xml。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="@android:color/tertiary_text_light"/>
</shape>
这将是textview背景circletwo.xml。试试这个。