Индекс строк Android GridLayout

У меня есть макет дизайна, подобный приведенному ниже коду, и я хочу написать код для каждого флажка, чтобы показать мне индекс выбранной строки при проверке, но я не знаю, как получить это свойство из моего gridlayout динамически, а не ввод индекса вручную в Toast.makeText(). Буду признателен, если вы поможете мне в этом вопросе.

Вот мой макет:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:columnCount="5"
  android:rowCount="4" 
  android:orientation="horizontal" 
  android:background="#FF1354"
  android:id="@+id/Grd">
  <TextView android:text=" R 1, C 1 " 
       android:background="@drawable/border" />

  <TextView 
      android:text=" R 1, C 2 "
       android:background="@drawable/border"/>

  <TextView android:text=" R 1, C 3 "
       android:background="@drawable/border" />

  <TextView android:text=" R 1, C 4 "
      android:background="@drawable/border" />

  <CheckBox 
      android:id="@+id/chk1"
      android:text=""
     style="?android:attr/starStyle"  />

  <TextView android:text=" R 2, C 1 "
      android:background="@drawable/border" />

  <TextView android:text=" R 2, C 2 "
      android:background="@drawable/border" />

  <TextView android:text=" R 2, C 3 "
      android:background="@drawable/border" />

  <TextView android:text=" R 2, C 4 "
       android:background="@drawable/border" />

  <CheckBox
      android:id="@+id/chk2"
       android:text=""
   style="?android:attr/starStyle"  />

  <TextView android:text=" R 3, C 1 "
       android:background="@drawable/border" />
  <TextView android:text=" R 3, C 2 "
      android:background="@drawable/border" />

  <TextView android:text=" R 3, C 3 "
       android:background="@drawable/border" />

  <TextView android:text=" R 3, C 4 " 
      android:background="@drawable/border"/>

  <CheckBox 
      android:id="@+id/chk3"
      android:text=""
       style="?android:attr/starStyle"/>

  <TextView android:text=" R 4, C 1 "
    android:background="@drawable/border" />

  <TextView android:text=" R 4, C 2 "
      android:background="@drawable/border" />

  <TextView android:text=" R 4, C 3 "
       android:background="@drawable/border" />

  <TextView android:text=" R 4, C 4 "
      android:background="@drawable/border" />

  <CheckBox 
      android:id="@+id/chk4"
      android:text=""
      style="?android:attr/starStyle" />

</GridLayout>

и вот мой код:

package com.example.hiiiiiiiiiiiiii;

import com.example.mynewtestoftablecheck.MyNewTestTableCheck;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.CheckBox;
import android.widget.GridLayout;
import android.widget.GridView;
import android.widget.Toast;

public class Hiiiiiiiiiiiiiiiiiiiiiiii extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hiiiiiiiiiiiiiiiiiiiiiiii);


      CheckBox chk1=(CheckBox)findViewById(R.id.chk1);
      chk1.setOnClickListener(new View.OnClickListener() {
          GridLayout Grd=(GridLayout)findViewById(R.id.Grd);


        @Override
        public void onClick(View arg0) {
            {
                if (((CheckBox) arg0).isChecked()) {
                    Toast.makeText(Hiiiiiiiiiiiiiiiiiiiiiiii.this,
                               "1st Row checked", Toast.LENGTH_LONG).show();
                }
                else
                {
                    Toast.makeText(Hiiiiiiiiiiiiiiiiiiiiiiii.this,
                            "1st Row Unchecked", Toast.LENGTH_LONG).show();
        }
                }

            }
        });



      CheckBox chk2=(CheckBox)findViewById(R.id.chk2);
      CheckBox chk3=(CheckBox)findViewById(R.id.chk3);
      CheckBox chk4=(CheckBox)findViewById(R.id.chk4);



    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_hiiiiiiiiiiiiiiiiiiiiiiii, menu);
        return true;
    }
}

person Community    schedule 17.12.2012    source источник


Ответы (1)


сетка.xml

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:columnCount="5"
  android:rowCount="4" 
  android:orientation="horizontal" 
  android:background="#FF1354"
  android:id="@+id/Grd">
</GridLayout>

отдельно item_grid.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

  <TextView android:text=" R 1, C 1 " 
       android:background="@drawable/border" />

  <TextView 
      android:text=" R 1, C 2 "
       android:background="@drawable/border"/>

  <TextView android:text=" R 1, C 3 "
       android:background="@drawable/border" />

  <TextView android:text=" R 1, C 4 "
      android:background="@drawable/border" />

  <CheckBox 
      android:id="@+id/chk1"
      android:text=""
     style="?android:attr/starStyle"  />

</LinearLayout>

и рядом с вами настраиваемый адаптер Grig

public class GridviewAdapter extends BaseAdapter {

    private Activity activity;
    ArrayList<HashMap<String, String>> mapList;

    public GridviewAdapter(Activity activity,
            ArrayList<HashMap<String, String>> mapList_) {
        super();
        this.mapList = mapList_;
        this.activity = activity;

    }

    public int getCount() {
        // TODO Auto-generated method stub
        return mapList.size();
    }

    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    public static class ViewHolder {
        public ImageView imgViewFlag;
        public TextView txtViewTitle;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder view;
        LayoutInflater inflator = activity.getLayoutInflater();

        if (convertView == null) {
            view = new ViewHolder();
            convertView = inflator.inflate(R.layout.item_grid, null);

            view.txtViewTitle = (TextView) convertView
                    .findViewById(R.id.myImageViewText);



            convertView.setTag(view);
        } else {
            view = (ViewHolder) convertView.getTag();
        }

        view.txtViewTitle.setText("NAME");


        return convertView;
    }

в вашей деятельности

adapter = new GridviewAdapter(this, mapList);
        // Set custom adapter to gridview
        gridView = (GridView) findViewById(R.id.gvMain);
        gridView.setNumColumns(GridviewAdapter.rowCount);
        gridView.setAdapter(adapter);

        gridView.setSelector(android.R.color.transparent);
        // gridView.setColumnWidth(GridviewAdapter.returnDisplayMetrics(this));

        gridView.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {



            }
        });
person Max Usanin    schedule 17.12.2012
comment
Спасибо, но у меня нет изображения! Не могли бы вы объяснить, что вы написали? - person ; 17.12.2012
comment
извините, вид изображения действительно отсутствует :) Я надул базовый адаптер... 1 минута, я добавляю источник - person Max Usanin; 17.12.2012
comment
Извините, но я получаю слишком много ошибок в нереализованных классах или методах или неопределенных переменных, например: Метод initializeDisplayMetrics() не определен для типа GridviewAdapter. - person ; 17.12.2012
comment
Большое спасибо, но дайте мне подсказку, пожалуйста, чтобы решить эти две последние ошибки Тип GridviewAdapter должен реализовывать унаследованный абстрактный метод Adapter.getItem(int) myImageViewText не может быть разрешен или не является полем - person ; 17.12.2012
comment
‹TextView android:text= R 1, C 1 android:id=@+id/myImageViewText android:background=@drawable/border /› - person Max Usanin; 17.12.2012