如何制作 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
使用 onItemClick
的 view
参数从单击的项目访问按钮:
@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");
}
});
我是 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
使用 onItemClick
的 view
参数从单击的项目访问按钮:
@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");
}
});