如何制作 GridView 项目(文本视图)的 .setText() onItemSelected?

How to make .setText() of a GridView item (textview) onItemSelected?

我是 android 的初学者。这里我想在单击时更改GridView中项目的文本,我想知道如何实现....

这是我的代码:

 public class MainActivity extends Activity implements OnItemClickListener  {
    TextView tv;
    Button b;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        GridView gv = (GridView) findViewById(R.id.gridView1);
        b = (Button) findViewById(R.id.button1);

        gv.setAdapter(new custom(this));
        gv.setOnItemClickListener(this);


    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        // TODO Auto-generated method stub


    }

}

自定义 class:

public class custom extends BaseAdapter  {
private LayoutInflater li;


Context ctx;
Button b2;

int v = 0;
String items = "Krishna";

public custom(Context c) {
    ctx = c;
    li=(LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return items.length();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub

    return items.charAt(position);
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub

    return position;
}

@Override
public View getView(int position, View convertview, ViewGroup parent) {
    View b1=convertview;
    if(convertview==null){

        b1=li.inflate(R.layout.c_layout, null);
    }
    b2 =(Button) b1.findViewById(R.id.button2); 
    b2.setText(String.valueOf(items.charAt(position)));
    b2.setHeight((int) 60);
    b2.setGravity(Gravity.CENTER);
    b2.setClickable(true);
    if ((position % 2) == 0) {

        katre();
    } else {
        katre2();
    }


    return b1;

}

public void katre() {
    b2.setBackgroundResource(extracted());
}

private int extracted() {
    return R.color.button_material_dark;
}

public void katre2() {
    b2.setBackgroundResource(R.color.material_blue_grey_900);
}

}

和activity_main.xml:

         <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" 
            android:layout_gravity="center_horizontal"/>
        <GridView
        android:id="@+id/gridView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:numColumns="7"
        android:stretchMode="columnWidth"
         >

    </GridView>

    </LinearLayout>

最后 c_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

<Button

    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="Button" />

</RelativeLayout>

请帮帮我...

want to change the text of the item in gridview when it is clicked

使用 onItemClickview 参数从单击的项目访问按钮:

@Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
       Button clickedItem =(Button) view.findViewById(R.id.button2); 
       clickedItem.setText("Clicked");
    }

编辑:

或者你可以在 getView 方法中给 Button 添加 OnClickListener 来实现:

          b2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                     ((Button)v).setText("Clicked");
                }
            });