【问题标题】:How to make .setText() of a GridView item (textview) onItemSelected?如何在ItemSelected上制作GridView项目(textview)的.setText()?
【发布时间】:2015-04-09 12:24:19
【问题描述】:

我是 android 的初学者。这里我想改变GridView中item被点击时的文字,我想知道怎么做....

这是我的代码:

 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


    }

}

自定义类:

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>

请帮帮我...

【问题讨论】:

  • 什么时候想在 GridView 的 Button Click 或 Item Click 上更改 Button 的文本?
  • 关于 GridView 的项目点击

标签: java android onclicklistener android-gridview settext


【解决方案1】:

想要在gridview中改变item被点击时的文本

使用onItemClickview参数从被点击的Item中访问Button:

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

编辑:

或者您可以通过在getView 方法中将OnClickListener 添加到Button 来实现:

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

【讨论】:

  • 你能告诉我,如何获得第二次点击之前出现的文本@ρяσѕρєя K
  • @KRISHNATEJA:使用setTag()getTag() 方法来保存并从点击的行中获取价值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
相关资源
最近更新 更多