任何人都可以告诉我在Grid-View
项目中动态设置按钮数的方法。我的意思是,假设我有3X3的grid-view
(由不同产品的类别组成),当我点击它的第一个项目,我第一次获取网格视图中的子产品按钮列表,并且根据子产品的可用性,每个项目的编号都不相同。GridView中动态添加多个按钮
网格视图项目中显示的按钮列表可能会有所不同的每个项目click.I是新到Android所以任何帮助将不胜感激
这里是我的适配器的XML: -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >
<com.mss.skyjack.custom.views.SkyjackCustomTextview
android:id="@+id/tv_product"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="5dp"
android:gravity="center"
android:text="@string/product"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/black_color" />
<ImageView
android:id="@+id/img_product"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:src="@drawable/ic_launcher" />
<LinearLayout
android:id="@+id/lnr_test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="30dp"
android:orientation="vertical" android:visibility="gone">
</LinearLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000000" />
</LinearLayout>
<View
android:id="@+id/view_right_line"
android:layout_width="3dp"
android:layout_height="match_parent"
android:background="#000000" />
</LinearLayout>
这里是我的适配器类: -
public class ProductSelectorAdapter extends BaseAdapter {
\t Activity activity;
\t List<SelectorTest> listSelector;
\t private Button btn;
\t List<catagoriesListModal> _categories;
\t public ProductSelectorAdapter(Activity activity,
\t \t \t List<SelectorTest> listSelector) {
\t \t this.activity = activity;
\t \t this.listSelector = listSelector;
\t }
\t @Override
\t public int getCount() {
\t \t return listSelector.size();
\t }
\t @Override
\t public SelectorTest getItem(int position) {
\t \t return listSelector.get(position);
\t }
\t @Override
\t public long getItemId(int position) {
\t \t return position;
\t }
\t @Override
\t public View getView(int position, View convertView, ViewGroup parent) {
\t \t final ViewHolder viewHolder;
\t \t _categories = listSelector.get(position).getCategories();
\t \t if (convertView == null) {
\t \t \t LayoutInflater inflater = (LayoutInflater) activity
\t \t \t \t \t .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
\t \t \t convertView = inflater.inflate(R.layout.selector_items, parent,
\t \t \t \t \t false);
\t \t \t viewHolder = new ViewHolder();
\t \t \t viewHolder.tvProductName = (TextView) convertView
\t \t \t \t \t .findViewById(R.id.tv_product);
\t \t \t viewHolder.imgView = (ImageView) convertView
\t \t \t \t \t .findViewById(R.id.img_product);
\t \t \t viewHolder.viewRightLine = (View) convertView
\t \t \t \t \t .findViewById(R.id.view_right_line);
\t \t \t viewHolder.lnrLayout = (LinearLayout) convertView
\t \t \t \t \t .findViewById(R.id.lnr_test);
\t \t \t convertView.setTag(viewHolder);
\t \t } else {
\t \t \t viewHolder = (ViewHolder) convertView.getTag();
\t \t }
\t \t if (!activity.getResources().getBoolean(R.bool.landscape_only)) {
\t \t \t if (position % 2 != 0) {
\t \t \t \t viewHolder.viewRightLine.setVisibility(View.GONE);
\t \t \t } else {
\t \t \t \t viewHolder.viewRightLine.setVisibility(View.VISIBLE);
\t \t \t }
\t \t } else {
\t \t \t if (position % 3 != 0 & position % 3 != 1) {
\t \t \t \t viewHolder.viewRightLine.setVisibility(View.GONE);
\t \t \t } else {
\t \t \t \t viewHolder.viewRightLine.setVisibility(View.VISIBLE);
\t \t \t }
\t \t }
\t \t SelectorTest selectorTest = listSelector.get(position);
\t \t viewHolder.tvProductName.setText(selectorTest.getName());
\t \t viewHolder.imgView.setImageResource(selectorTest.getImage());
\t \t viewHolder.imgView.setOnClickListener(new OnClickListener() {
\t \t \t @Override
\t \t \t public void onClick(View v) {
\t \t \t \t if (activity.getResources().getBoolean(R.bool.landscape_only)) {
\t \t \t \t \t viewHolder.lnrLayout.setVisibility(View.VISIBLE);
\t \t \t \t \t viewHolder.imgView.setVisibility(View.GONE);
\t \t \t \t \t for (int i = 0; i < _categories.size(); i++) {
\t \t \t \t \t \t btn = new Button(activity);
\t \t \t \t \t \t btn.setText(_categories.get(i).getName());
\t \t \t \t \t \t viewHolder.lnrLayout.addView(btn);
\t \t \t \t \t \t int idx = viewHolder.lnrLayout.indexOfChild(btn);
\t \t \t \t \t \t btn.setTag(Integer.toString(idx));
\t \t \t \t \t \t btn.setOnClickListener(new OnClickListener() {
\t \t \t \t \t \t \t @Override
\t \t \t \t \t \t \t public void onClick(View v) {
\t \t \t \t \t \t \t \t String idxStr = (String) v.getTag();
\t \t \t \t \t \t \t \t Toast.makeText(activity, idxStr,
\t \t \t \t \t \t \t \t \t \t Toast.LENGTH_SHORT).show();
\t \t \t \t \t \t \t }
\t \t \t \t \t \t });
\t \t \t \t \t }
\t \t \t \t } else {
\t \t \t \t \t Session.ChangeFragmentWithBack(new ProductDetailFragment(),
\t \t \t \t \t \t \t "ProductDetailFragment", "ProductDetailFragment", 0);
\t \t \t \t }
\t \t \t }
\t \t });
\t \t return convertView;
\t }
\t static class ViewHolder {
\t \t TextView tvProductName, tvTest;
\t \t ImageView imgView;
\t \t View viewRightLine;
\t \t ListView lstroduct;
\t \t ScrollView scrlLstItems;
\t \t LinearLayout lnrLayout;
\t \t Button btn1, btn2, btn3;
\t }
这里是我SelectorTest模型类: -
import java.util.List;
public class SelectorTest {
\t int id;
\t String name;
\t int image;
\t List<catagoriesListModal> categories;
\t public int getId() {
\t \t return id;
\t }
\t public void setId(int id) {
\t \t this.id = id;
\t }
\t public String getName() {
\t \t return name;
\t }
\t public void setName(String name) {
\t \t this.name = name;
\t }
\t public int getImage() {
\t \t return image;
\t }
\t public void setImage(int image) {
\t \t this.image = image;
\t }
\t public List<catagoriesListModal> getCategories() {
\t \t return categories;
\t }
\t public void setCategories(List<catagoriesListModal> categories) {
\t \t this.categories = categories;
\t }
}
这里是我catagoriesListModal类: -
public class catagoriesListModal {
\t String name;
\t int id;
\t public String getName() {
\t \t return name;
\t }
\t public void setName(String name) {
\t \t this.name = name;
\t }
\t public int getId() {
\t \t return id;
\t }
\t public void setId(int id) {
\t \t this.id = id;
\t }
}
谢谢
必须使用您网格视图正确的适配器使用?你可以发布代码吗? – harshitpthk
嘿哈尔斯,谢谢你的回复,请检查我更新后的帖子 –
运行你粘贴的代码后你得到了什么?任何错误?崩溃?或者是其他东西? –