Индекс на редове за 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)


grid.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>

и следващият персонализиран адаптер за григ

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
Благодаря, но нямам никакъв изглед на изображението! Моля, бихте ли обяснили gridadpater, който сте написали - person ; 17.12.2012
comment
съжалявам, изгледът на изображението наистина липсва :) Напомпах основния адаптер... 1 минута добавям sorce - 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