android 中点击一个Button,怎样在TextView中显示点击次数?

qidaodefeng 2012-08-29 02:51:13

//这是GridView的OnItemClickListener的监听
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
LayoutInflater inflater = LayoutInflater.from(this);
//自定义了布局
final View v = inflater.inflate(R.layout.view02, null);

Button Right = (Button) v.findViewById(R.id.right);
Right.setOnClickListener(new righonclickListener());

AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle("请选择:")
.setView(v)
.setIcon(arg0.getId())
.setPositiveButton("确定", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {

TextView num_tv = (TextView) v.findViewById(R.id.morensl);
num_tv.setText(String.valueOf(m_ClickNum));
String numStr = num_tv.getText().toString();

//省略下边对numStr的操作

}
})
.setNegativeButton("取消", null);
AlertDialog alert = builder.create();
alert.show();

}
//对Button的监听器
public class righonclickListener implements OnClickListener{

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
m_ClickNum ++ ;//已经声明为Private

}

}

...全文
576 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qidaodefeng 2012-10-22
  • 打赏
  • 举报
回复
把显示数量的TextView声明为final TextView num_tv = (TextView) v.findViewById(R.id.morensl);//在哪里用,就在哪里实例化
m_ClickNum =1;
Right.setOnClickListener(new View.OnClickListener(){

public void onClick(View arg0) {
m_ClickNum ++ ;
num_tv.setText(""+m_ClickNum);//在这里给num_tv赋值
}
});
Left.setOnClickListener(new View.OnClickListener(){

public void onClick(View v) {
m_ClickNum -- ;
num_tv.setText(""+m_ClickNum);

}

});
qidaodefeng 2012-09-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
在righonclickListener类的onClick函数里打印出次数看看,或者debug看看值。
另外,m_ClickNum是声明为哪个类的成员了?如果是righonclickListener类成员的话,每次都是new一个新的变量,所以值不变。
[/Quote]
在onclick里是可以打印出来次数的,m_ClickNum是在整个Activity里声明的
不是声明为righonclickListener类成员
ameyume 2012-09-08
  • 打赏
  • 举报
回复
在righonclickListener类的onClick函数里打印出次数看看,或者debug看看值。
另外,m_ClickNum是声明为哪个类的成员了?如果是righonclickListener类成员的话,每次都是new一个新的变量,所以值不变。
qidaodefeng 2012-09-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
应该定义个int类型的变量。
在Btn的Click事件里让其++;
将变量的值赋给ListView
[/Quote]

您说的我都做了,您可以看一下我写的程序,TextView还是什么都不显示
E次奥 2012-08-30
  • 打赏
  • 举报
回复
应该定义个int类型的变量。
在Btn的Click事件里让其++;
将变量的值赋给ListView
流星叶雨 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
引用 1 楼 的回复:
如果简单的问题,怎么就没解决.
public void onClick(View arg0) {
// TODO Auto-generated method stub
m_ClickNum ++ ;//已经声明为Private
Right.setText(""+m_ClickNum);
}

}

在这里你要怎么得到Right啊?你看一下,right是我……
[/Quote]
设计本身就有问题,这样的话每点击一次就要从新实例化btn等控件,自然检测不到,因为每点击一次都是一个新的对象了,而且相当的浪费资源……
你把点击事件回调函数里面定义的变量全部在点击事件回调函数外实例化就行了。
ltbiao 2012-08-30
  • 打赏
  • 举报
回复
Button Right;声名为类私有.
qidaodefeng 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
如果简单的问题,怎么就没解决.
public void onClick(View arg0) {
// TODO Auto-generated method stub
m_ClickNum ++ ;//已经声明为Private
Right.setText(""+m_ClickNum);
}

}
[/Quote]
在这里你要怎么得到Right啊?你看一下,right是我在对话框里自定义的布局时声明的
j_f0001 2012-08-29
  • 打赏
  • 举报
回复
如果简单的问题,怎么就没解决.
public void onClick(View arg0) {
// TODO Auto-generated method stub
m_ClickNum ++ ;//已经声明为Private
Right.setText(""+m_ClickNum);
}

}

本项目主要是对数据库进行增删改查操作 DBAdapter_mll类主要是对数据库进行操作的类 package bjedu.dky.mll; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; public class DBAdapter_mll { private final String DB_NAME="people.db";//定义类的变量 private final static String DB_TABLE="peopleinfo"; private final int DB_VERSION=1; public final static String KEY_ID="_id"; public final static String KEY_NAME="name"; public final static String KEY_AGE="age"; public final static String KEY_HEIGHT="height"; private final Context context; private SQLiteDatabase db; DBOpenHelper dbOpenHelper; public DBAdapter_mll(Context _context){//定义类的构造方法,给变量context赋值 this.context=_context; } public long insert(People_mll people){//创建插入方法,并给四个变量赋值 ContentValues newValues=new ContentValues(); newValues.put(KEY_NAME, people.name);//用put()方法将数据放入ContentValues对象 newValues.put(KEY_AGE, people.age); newValues.put(KEY_HEIGHT, people.height); return db.insert(DB_TABLE, null, newValues); } public long deleteOneData(long id) {//定义有参数删除方法 return db.delete(DB_TABLE,KEY_ID+"="+id,null);//根据传的id值来判断要删除的数据库的列,返回删除的条数 } public long deleteAllData() {//定义全部删除方法 return db.delete(DB_TABLE,null,null);//删除数据库所有的数据,返回删除的条数 } private People_mll [] convertToPeople(Cursor cursor){//定义People_mll类型的参数为游标类型的方法 int resultCounts=cursor.getCount();//获得返回记录的个数赋给变量 if(resultCounts==0||!cursor.moveToFirst()){//当记录的个数的值为0或指针指向第一条记录时,执行花括号的语句 return null; } People_mll[] peoples=new People_mll [resultCounts];//用People_mll类定义一个数组,数组的长度为记录的个数 for(int i = 0;i次数为记录的个数 peoples[i]=new People_mll();//创建一个新的People_mll类的对象,并赋给peoples数组的第一个元素 peoples[i].id=cursor.getInt(0);//将返回的列的值赋给id peoples[i].name=cursor.getString(cursor.getColumnIndex(KEY_NAME));//将返回的列的值赋给name peoples[i].height=cursor.getFloat(cursor.getColumnIndex(KEY_HEIGHT));//将返回的列的值赋给height peoples[i].age=cursor.getInt(cursor.getColumnIndex(KEY_AGE));//将返回的列的值赋给age cursor.moveToNext();//将指针移向下一条记录 } return peoples;//将peoples数组的值返回 } public People_mll[] queryAllData(){//定义一个类型为People_mll更新全部记录的方法 //用query方法返回游标Cursor对象 Cursor results=db.query(DB_TABLE, new String[]{KEY_ID,KEY_NAME,KEY_AGE,KEY_HEIGHT}, null, null, null, null, null); return this.convertToPeople(results);//将results传给convertToPeople方法的形参,并将peoples数组的值返回 } public People_mll[] queryIdData(long id){//定义一个类型为People_mll更新全部记录的方法 //用query方法返回游标Cursor对象 Cursor results=db.query(DB_TABLE, new String[]{KEY_ID,KEY_NAME,KEY_AGE,KEY_HEIGHT}, KEY_ID+"="+id, null, null, null, null); return this.convertToPeople(results); } public long upData(long id,People_mll people){//更新数据方法 ContentValues newValues=new ContentValues();//要插入的字段值 newValues.put(KEY_NAME, people.name);//用put()方法将数据放入ContentValues对象 newValues.put(KEY_AGE, people.age); newValues.put(KEY_HEIGHT, people.height); return db.update(DB_TABLE, newValues, KEY_ID+"="+id, null); } public void open() throws SQLiteException{//打开数据库 dbOpenHelper=new DBOpenHelper(context,DB_NAME,null,DB_VERSION); try { db= dbOpenHelper.getWritableDatabase();//向数据库写入数据获得一个可写入的SQliteDatabase对象 } catch (SQLiteException e){ db= dbOpenHelper.getReadableDatabase(); //从数据库读取数据 } } public void close(){//关闭数据库 if (db!=null){ close(); db=null; } } private static class DBOpenHelper extends SQLiteOpenHelper{//定义一个类主要实现数据库表的创建,数据更新功能 public DBOpenHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } //创建列名 private static final String DB_CREATE="create table "+DB_TABLE+"("+KEY_ID+ " integer primary key autoincrement,"+KEY_NAME+" text not null," +KEY_AGE+" integer,"+KEY_HEIGHT+" float);"; public void onCreate(SQLiteDatabase db) {//创建和初始化数据库的表的等数据库对象 并且初始化表的数据 // TODO Auto-generated method stub db.execSQL(DB_CREATE); } //当数据库的数据的值发生变化时 会调用此数据 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("DROP TABLE IF EXITS"+DB_TABLE); onCreate(db); } } } package bjedu.dky.mll; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class SQLListDemoActivity extends Activity { DBAdapter_mll dbOpenHelper; public void onCreate(Bundle savedInstanceState) { dbOpenHelper =new DBAdapter_mll(this);//创建DBAdapter_mll类的对象 dbOpenHelper.open();//调用类的方法 super.onCreate(savedInstanceState); setContentView(R.layout.main); Button addButton=(Button)findViewById(R.id.addButton);//找到在xml文件的控件 Button allDeleteButton=(Button)findViewById(R.id.allDeleteButton); Button allXianShiButton=(Button)findViewById(R.id.allXianShiButton); Button idChaXunButton=(Button)findViewById(R.id.idChaXunButton); Button idDeleteButton=(Button)findViewById(R.id.idDeleteButton); Button idUpdataButton=(Button)findViewById(R.id.idUpdataButton); Button qingChuXianShiButton=(Button)findViewById(R.id.qingChuXianShiButton); final EditText ageEditText=(EditText)findViewById(R.id.ageEditText); final EditText heightEditText=(EditText)findViewById(R.id.heightEditText); final EditText idEditText=(EditText)findViewById(R.id.idEditText); final EditText nameEditText=(EditText)findViewById(R.id.nameEditText); final TextView shuChuTextView=(TextView)findViewById(R.id.shuChuTextView); final TextView resultTextView=(TextView)findViewById(R.id.resultTextView); addButton.setOnClickListener(new View.OnClickListener() {//给addButton添加事件监听 public void onClick(View v) { // TODO Auto-generated method stub People_mll people=new People_mll(); //首先判断输入框是否为空 if(nameEditText.getText().toString().equals("")|| ageEditText.getText().toString().equals("")||heightEditText.getText().toString().equals("")) { Toast.makeText(SQLListDemoActivity.this, "请输入要添加的数据", Toast.LENGTH_LONG).show();//弹出一个即时窗口 } else{//不为空时,将输入输入框的字符串赋给People_mll类的变量 people.name=nameEditText.getText().toString(); people.age=Integer.parseInt(ageEditText.getText().toString()); people.height=Integer.parseInt(heightEditText.getText().toString()); long colunm=dbOpenHelper.insert(people);//调用DBAdapter的方法,将people作为参数,将数据传入数据库 if(colunm==-1){ resultTextView.setText("添加失败");//重新设置TextView的值 }else{ resultTextView.setText("添加成功"); } } Toast.makeText(SQLListDemoActivity.this, "你点击了添加按钮", Toast.LENGTH_LONG).show(); } }); allDeleteButton.setOnClickListener(new View.OnClickListener() {//给全部删除按钮做事件监听 public void onClick(View v) { // TODO Auto-generated method stub shuChuTextView.setText(""); dbOpenHelper.deleteAllData();//调用DBAdapter类的方法 Toast.makeText(SQLListDemoActivity.this, "全部删除成功", Toast.LENGTH_LONG).show(); } }); idDeleteButton.setOnClickListener(new View.OnClickListener() {//全部删除按钮做事件监听 public void onClick(View v) { People_mll[] peoples=dbOpenHelper.queryAllData(); if(idEditText.getText().toString().equals("")){//判断id输入框是否有数据 Toast.makeText(SQLListDemoActivity.this, "请输入ID", Toast.LENGTH_LONG).show(); } else{//当输入框有数据时,再给id赋值 long id=Integer.parseInt(idEditText.getText().toString()); long colunm=dbOpenHelper.deleteOneData(id); if(colunm==0){//根据删除记录的条数判断是否删除成功 shuChuTextView.setText(""); resultTextView.setText("删除失败 数据库无此数据"); }else{ shuChuTextView.setText(""); resultTextView.setText("删除成功"); Toast.makeText(SQLListDemoActivity.this, "删除成功", Toast.LENGTH_LONG).show(); } } } }); allXianShiButton.setOnClickListener(new View.OnClickListener() {//给全部显示做事件监听 public void onClick(View v) { // TODO Auto-generated method stub People_mll[] peoples=dbOpenHelper.queryAllData(); if(peoples==null){//判断peoples是否有值 Toast.makeText(SQLListDemoActivity.this, "没有数据记录", Toast.LENGTH_LONG).show(); return ; } String mag =""; for(int i=0;i中的记录通过调用方法showAll()赋给mag,并显示textView mag+=peoples[i].showAll()+"\n"; } shuChuTextView.setText(mag); resultTextView.setText("显示结果"); } }); idChaXunButton.setOnClickListener(new View.OnClickListener() {//给id查询做事件监听 public void onClick(View v) { // TODO Auto-generated method stub if(idEditText.getText().toString().equals(""))//判断id是否有值 { Toast.makeText(SQLListDemoActivity.this, "请输入要查询的id", Toast.LENGTH_LONG).show(); } else{//当id输入框有值时,再调用DBAdapter类的方法 long id=Integer.parseInt(idEditText.getText().toString()); People_mll[] peoples=dbOpenHelper.queryIdData(id); if(peoples==null){//判断peoples是否有值 shuChuTextView.setText(""); resultTextView.setText("查询失败 数据库无此数据"); }else{ shuChuTextView.setText("查询结果"); shuChuTextView.setText(peoples[0].showAll());//将查询结果显示TextView } } Toast.makeText(SQLListDemoActivity.this, "你点击了ID查询按钮", Toast.LENGTH_LONG).show(); } }); idUpdataButton.setOnClickListener(new View.OnClickListener() {//id更新按钮做事件监听 public void onClick(View v) { // TODO Auto-generated method stub People_mll people=new People_mll(); //判断输入框是否有值 if(nameEditText.getText().toString().equals("")||idEditText.getText().toString().equals("")|| ageEditText.getText().toString().equals("")||heightEditText.getText().toString().equals("")) { Toast.makeText(SQLListDemoActivity.this, "请完整输入要添加的数据", Toast.LENGTH_LONG).show(); } else//当输入框都有值时,再将输入框的值传入数据库 { long id=Integer.parseInt(idEditText.getText().toString()); people.name=nameEditText.getText().toString(); people.age=Integer.parseInt(ageEditText.getText().toString()); people.height=Integer.parseInt(heightEditText.getText().toString()); long colunm=dbOpenHelper.upData(id, people);//调用DBAdapter类的方法 if(colunm==-1){//根据更新记录的条数判断是否更新成功 resultTextView.setText("更新失败"); }else{ resultTextView.setText("修改"+String.valueOf(colunm)+"条记录成功"); } } Toast.makeText(SQLListDemoActivity.this, "你点击了ID更新按钮", Toast.LENGTH_LONG).show(); } }); qingChuXianShiButton.setOnClickListener(new View.OnClickListener() {//为清除按钮做事件监听 public void onClick(View v) { shuChuTextView.setText("");//清除shuChuTextView的数据记录 resultTextView.setText("清除成功"); Toast.makeText(SQLListDemoActivity.this, "清除成功", Toast.LENGTH_LONG).show(); } }); } } package bjedu.dky.mll; public class People_mll {//创建一个类,主要定义变量 public String name; public float height; public int age; public int id=-1; public String showAll(){//定义一个将变量都加到一个字符串方法,并将这个字符串的值返回 String all; all="ID:"+this.id+" 姓名:"+this.name+" 年龄:"+this.age+" 身高:"+this.height; return all; } }

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧