- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 4 个 TextView 和 2 个按钮的自定义 ListView ,我正在通过数据库填充它,
电视名称 |电视邮箱 |电视号 | TV ID(数据库主键,设置不可见) |按钮编辑 |按钮删除。
成功从数据库中获取到id,设置为主键。
现在我想做的是,当我按下 ButtonEDIT 时,它应该显示一条消息,例如“为 ID 选择的编辑:”+ TVID.getText().toString(),所以基本上我想显示存储在 TVID 中的值(即我的数据库 ID)。
但是当我尝试这样做时,它只显示不同行按钮的 firstID (0),请尽快提供帮助。
我在下面链接代码
自定义 ListView 适配器:
package com.iwill.Database_add_display;
import java.io.ObjectOutputStream.PutField;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MyAdapter extends BaseAdapter
{
private ArrayList<userdetails> data;
private static LayoutInflater minflater=null;
private int[] userArray;
public MyAdapter(Context context,ArrayList<userdetails> results)
{
data = results;
minflater = LayoutInflater.from(context);
}
@Override
public int getCount()
{
return data.size();
}
@Override
public Object getItem(int position)
{
return data.get(position);
}
@Override
public long getItemId(int position)
{
return position;
}
public int getUserArray(int position){
return userArray[position];
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
if (convertView == null)
{
convertView = minflater.inflate(R.layout.row, null);
holder = new ViewHolder();
holder.tvname = (TextView) convertView.findViewById(R.id.textname);
holder.tvemail = (TextView) convertView.findViewById(R.id.textemail);
holder.tvno = (TextView) convertView.findViewById(R.id.textno);
holder.tvID = (TextView)convertView.findViewById(R.id.textID);
holder.b1 = (Button) convertView.findViewById(R.id.btnEdit);
holder.b2 = (Button) convertView.findViewById(R.id.btnDelete);
//convertView.setTag(holder);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.tvname.setText(data.get(position).getName());
holder.tvemail.setText(data.get(position).getMail());
holder.tvno.setText(data.get(position).getNo());
holder.tvID.setText(String.valueOf(data.get(position).getID()));
return convertView;
}
static class ViewHolder
{
TextView tvname;
TextView tvemail;
TextView tvno;
Button b1;
Button b2;
TextView tvID;
}
}
列表 Activity :
package com.iwill.Database_add_display;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class viewnameactivity extends Activity
{
ArrayList<userdetails> mylist = new ArrayList<userdetails>();
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
ListView listView;
MyAdapter adapter;
int pos;
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.viewname);
mDbHelper = new DatabaseHelper(this);
final List<userdetails> List = mDbHelper.selectAll();
for (int i = 0; i < List.size(); i++)
{
//Log.i("List of Data....", List.get(i));
}
for (int j = 0; j < List.size(); j++)
{
mylist.add(List.get(j));
Log.i("List View :", mylist.get(j).toString());
}
listView = (ListView)findViewById(R.id.listView);
adapter = new MyAdapter(this,mylist);
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,View v,int position,long id) {
Toast.makeText(viewnameactivity.this,"Edit button of ID : "+ adapter.getUserArray(position)+" selected.",
Toast.LENGTH_SHORT).show();
pos = adapter.getUserArray(position);
}
});
mDbHelper.close();
Button btnBack = (Button)findViewById(R.id.btnBack);
btnBack.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(viewnameactivity.this,MainActivity.class);
startActivity(i);
}
});
/* Button btnEdit = (Button)findViewById(R.id.btnEdit);
btnEdit.setOnClickListener(new OnClickListener() {
//TextView strID = (TextView)findViewById(R.id.textID);
//long lngID = Long.parseLong(strID.getText().toString());
@Override
public void onClick(View v) {
Toast.makeText(viewnameactivity.this,"Edit button of ID : selected.",
Toast.LENGTH_SHORT).show();
}
});
Button btnDelete = (Button)findViewById(R.id.btndelete);
btnDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(viewnameactivity.this,"Delete button of ID : selected.",
Toast.LENGTH_SHORT).show();
}
});*/
}
public void OnClickEdit(View v){
//TextView strID = (TextView)this.findViewById(R.id.textID);
//long lngID = Long.parseLong(strID.getText().toString());
Toast.makeText(viewnameactivity.this,"Edit button of ID : "+ pos +" selected.",
Toast.LENGTH_SHORT).show();
}
public void OnClickDelete(View v){
TextView strID = (TextView)findViewById(R.id.textID);
long lngID = Long.parseLong(strID.getText().toString());
Toast.makeText(viewnameactivity.this,"Delete button of ID :"+ lngID + "selected.",
Toast.LENGTH_SHORT).show();
}
}
DatabaseOpenHelper 类:
package com.iwill.Database_add_display;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DatabaseHelper
{
public static final String KEY_NAME = "NAME";
public static final String KEY_MAIL = "EMAIL";
public static final String KEY_NO ="NO";
public static final String KEY_ID = "ID";
private static final String DATABASE_NAME = "info.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "user";
private static String DB_PATH = "/data/data/com.iwill.Database_add_display";
private static String DB_NAME = "info.db";
private static Context context;
private static SQLiteDatabase db;
private static final String TAG = "MEDIA";
public DatabaseHelper(Context context)
{
this.context = context;
OpenHelper openHelper = new OpenHelper(this.context);
this.db = openHelper.getWritableDatabase();
//this.insertStmt = this.db.compileStatement(INSERT);
}
public long insert(String uname,String mail,String no)
{
ContentValues CV = new ContentValues();
CV.put(KEY_NAME, uname);
CV.put(KEY_MAIL , mail);
CV.put(KEY_NO, no);
long rawId = db.insert(TABLE_NAME, null, CV);
return rawId;
}
public void update(long _ID,String updateuname,String updatemail,String updateno)
{
Log.i("tag","_ID"+_ID);
ContentValues cvupdate=new ContentValues();
cvupdate.put(KEY_NAME,updateuname);
cvupdate.put(KEY_MAIL, updatemail);
cvupdate.put(KEY_NO, updateno);
db.update(TABLE_NAME, cvupdate, "_id"+" = ?",new String[]{String.valueOf(_ID)});
Log.i("tag", "Item Updated Database Helper");
}
public void delete(long _ID)
{
this.db.delete(TABLE_NAME, "_id"+" = ?", new String[]{String.valueOf(_ID)});
Log.i("tag", "Item deleted");
}
public List<userdetails> selectAll(){
List<userdetails> list = new ArrayList<userdetails>();
Cursor cursor = this.db.query(TABLE_NAME, new String[] {"_id", "NAME", "EMAIL", "NO"},
null, null, null, null, "_id asc");
if(cursor.moveToFirst()){
do {
userdetails usd= new userdetails();
usd.setName(cursor.getString(1));
usd.setMail(cursor.getString(2));
usd.setNo(cursor.getString(3));
usd.setID(cursor.getLong(0));
list.add(usd);
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
return list;
}
public void close(){
db.close();
}
public List<String> selectAllid(){
List<String> list = new ArrayList<String>();
Cursor cursor = this.db.query(TABLE_NAME, new String[] {"_id", "NAME"},
null, null, null, null, "_id asc");
if(cursor.moveToFirst()){
do {
//list.add(cursor.getInt(0) + " "+cursor.getString(1));
list.add(cursor.getString(0));
Log.i("List 0 (id)....", cursor.getString(0));
Log.i("List 1 (URL)....", cursor.getString(1));
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
return list;
}
// TESTING
private static class OpenHelper extends SQLiteOpenHelper
{
public OpenHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db)
{
// TODO Auto-generated method stub
String str = "CREATE TABLE IF NOT EXISTS user(_id INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT,EMAIL TEXT,NO TEXT)";
db.execSQL(str);
}
private boolean checkDatabase(){
SQLiteDatabase checkDB = null;
try{
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
}catch(SQLiteException e){
//database does't exist yet.
}
if(checkDB != null){
checkDB.close();
}
return checkDB != null ? true : false;
}
public void createNewDatabase() {
InputStream assetsDB = null;
try {
assetsDB = context.getAssets().open(DB_NAME);
OutputStream dbOut = new FileOutputStream(DB_PATH + DB_NAME);
byte[] buffer = new byte[1024];
int length;
while ((length = assetsDB.read(buffer)) > 0) {
dbOut.write(buffer, 0, length);
}
dbOut.flush();
dbOut.close();
assetsDB.close();
Log.i("New Database created.......", "New database created...");
} catch (IOException e) {
Log.e("Could not create new database...", "Could not create new database...");
e.printStackTrace();
}
}
@Override
public synchronized void close() {
if(db != null){
db.close();
super.close();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
//Log.w("Example", "Upgrading database, this will drop tables and recreate.");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
}
我有点初学者,非常感谢任何帮助。 (:
最佳答案
尝试将此添加到您的适配器中:
public class MyAdapter extends BaseAdapter
{
public static HashMap<Integer,String> myList=new HashMap<Integer,String>();
...
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
...
myList.put(position,String.valueOf(data.get(position).getID()));
return convertView;
}
...
}
现在在你的 Activity 中,
public class viewnameactivity extends Activity
{
...
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,View v,int position,long id) {
pos = adapter.getUserArray(position);
String TVID=MyAdapter.myList.get(position); // this will give you tvid for each listitem
}
});
...
}
关于android - 如何获取自定义 ListView 的选定行的子行的 rowID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475636/
我有十二个指向不同类别的链接。作为用户定位的一种方式,我想强调用户现在所在的类别( - 按钮)。 如何在 CSS 中实现这一点?我读到了 selected和 active ,但我还没能让它发挥作用。
我想通过单击按钮来获取选择框中的所有选项值(选定/未选定)。我怎样才能做到这一点? 最佳答案 我认为这是使用 Traversing/map 的好机会方法: var valuesArray = $("#
我正在尝试构建一个计算器,其中包含两个数字的两个 TextView 字段。我弄清楚了如何使用“应用程序内”数字键盘输入顶部数字 Operand 1 [textView] 的数字(我知道使用 EditT
我有一个简单的 jQuery $("span.value"),它选择包含文本的节点。此文本保证为整数。如何计算所有选定节点文本的总和,并将总和放入另一个节点? 3 4 5 ? 最佳答案 你可以这样做:
我从同一台服务器上托管的一堆数据库中备份了 mysql 数据库 db1。现在只需要备份具有访问 db1 权限的选定用户,以便我可以在 db1 还原之前将这些特权用户还原到我的新服务器。 最佳答案 St
我有一个 ListView 。我想添加一个动画,如果我选择一个列表项,它将被删除,并且该项目下方的其余项目将通过向上滑动动画向上移动。我已经通过获取其子位置使用线性布局完成了此操作,但我无法理解如何向
我不明白如何使用 Python 解析来自 Outlook 的突出显示(选定)邮件? 我有这个代码,但它适用于上一封邮件。 import win32com.client outlook = win32c
在 Xcode 6 中,您现在可以为选项卡项目的选中和未选中状态设置图标。请参阅下图中的说明: 和 唯一的问题是 SELECTED 状态的图像不显示。它只是显示空白。还有其他人有这个问题吗?请看下面的
在我的数据模型中,我有一个实体组和另一个GroupMember实体。一个Group包含一个或多个GroupMembers,但一个GroupMember只能同时位于一个Group中。到目前为止没有问题,
Android Button 在不同状态(正常、按下、选中、禁用)之间移动时会更改其可绘制背景。背景切换是即时的。是否可以使其平滑(动画)? 最佳答案 是的,这是可能的。您只需为按钮添加 addAni
我使用 emacs 来查看和编辑代码和其他文本文件。我想知道是否有一种方法可以向前或向后搜索当前缓冲区中标记的文本。类似于我在记事本或写字板中可以执行的操作。就像我可以在缓冲区中标记一些文本并执行 C
如何根据状态(选定、禁用)设置自定义选择类?如何根据状态选择(选定、禁用)在自定义下拉列表中设置类?照做了,但什么也没发生。请看我的例子................................
我正在尝试检查下拉菜单中是否存在特定文本值,如果存在,我想将其属性设置为selected。 我成功编写了一个 if 语句来检查文本是否存在: var country = usr.location; i
对于我的应用程序,我想让用户能够在回收器 View 中调整 TextView 项目的文本大小(通过捏缩放或 SeekBar)。默认值应为系统设置中选择的文本大小。最小值应为系统设置中的“非常小”,最大
我正在尝试创建一个 ListBoxItem 模板,该模板在选择时将带有圆角边框。我得到了这个 xaml,它在选择时不起作用:
我正在寻找检索焦点元素的 HTML。查看 webdriver.io 文档,方法 .getActiveElement() 应该可以解决这个问题。但是,我的 IDE (WebStorm) 显示错误,指出它
我创建了一个圆,在我的 onDraw() 方法中围绕圆绘制了一条字符串和一条线(箭头)。 public class Circle extends Activity { public class
对于生产应用程序,我们希望在 Windows 窗体应用程序的 ElementHost 内显示 DatePicker,但我们遇到了 SelectedDate 和 CurrentDate 不可读的问题,因
好的,我在此处和 Google 上的许多网站上搜索了此问题的结果,但找不到针对我的问题的确切解决方案。 我有一个 sql 提取姓名和办公室。所以事情是这样的: $sql = "SELECT m
选中单元格时如何改变灰色? 最佳答案 当用户点击选中的行 (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSInd
我是一名优秀的程序员,十分优秀!