首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库网格视图中的按钮

数据库网格视图中的按钮
EN

Stack Overflow用户
提问于 2016-06-15 07:38:49
回答 1查看 67关注 0票数 1

我喜欢把按钮安排在页面上。

但是按钮的数量取决于存储在数据库中的数据的数量。

为此,每个按钮都有一个存储在数据库中的标题。

按钮在页面中显示得很好,但我无法使它们可点击。

代码语言:javascript
复制
    private void displayGridView() {
    final Cursor cursor = MessagesBDD.fetchAllMessage();

    // The desired columns to be bound
    String[] columns = new String[]{MessagesBDD.COL_TITRE,};

    final GridView gridview = (GridView) findViewById(R.id.fragboutton);
    int[] to = new int[]{R.id.button9,};
    final SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.fragment_button, cursor, columns, to, 0);

    gridview.setAdapter(adapter);

}

在OnCreate中:

代码语言:javascript
复制
        //Création d'une instance de ma classe MessageBDD
    MessagesBDD messageBdd = new MessagesBDD(this);

    //On ouvre la base de données pour écrire dedans
    messageBdd.open();

    //Generate ListView from SQLite Database
    displayGridView();
    //Récupère le fragment permettant d'accèder à la liste des contacts

我的数据库:

代码语言:javascript
复制
public class Message {

private int id;
private String titre;
private String contenu;

public Message(){}

public Message(String titre, String contenu){
    this.titre = titre;
    this.contenu = contenu;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getTitre() {
    return titre;
}

public void setTitre(String titre) {
    this.titre = titre;
}

public String getContenu() {
    return contenu;
}

public void setContenu(String contenu) {
    this.contenu = contenu;
}

public String toString(){
    return "ID : "+id+"\ntitre : "+titre+"\nContenu : "+contenu;
}

fetchAllMessage:

代码语言:javascript
复制
    public static Cursor fetchAllMessage() {

    Cursor mCursor = bdd.query(TABLE_MESSAGES, new String[] {COL_ID, COL_TITRE, COL_CONTENU}, null, null, null, null, null);

    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

谢谢你们的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-15 12:07:01

在活动中创建方法

代码语言:javascript
复制
public ArrayList<Message> fetchAllMessage()
 {
  ArrayList<Message> mArrayList = new ArrayList<>();

  Cursor mCursor = bdd.query(TABLE_MESSAGES, new String[]{COL_ID, COL_TITRE, COL_CONTENU}, null, null, null, null, null);

  if (mCursor != null)
  {
   mCursor.moveToFirst();

   mCursor.moveToFirst();
   while (!mCursor.isAfterLast())
   {
    Message message = new Message();
    message.setTitre(mCursor.getString(mCursor.getColumnIndex(COL_TITRE)));
    message.setId(mCursor.getInt(mCursor.getColumnIndex(COL_ID)));
    message.setContenu(mCursor.getString(mCursor.getColumnIndex(COL_CONTENU)));
    mArrayList.add(message);
    mCursor.moveToNext();
   }
  }
  return mArrayList;

 }

添加集网格视图适配器

ButtonAdapter适配器=新的ButtonAdapter(此,fetchAllMessage);

Gridview.setAdapter(适配器);

ButtonAdapter.java

代码语言:javascript
复制
public class ButtonAdapter extends BaseAdapter
{
 private Context mContext;
 ArrayList<Message> list;
 // Gets the context so it can be used later
 public ButtonAdapter(Context c, ArrayList<Message> list) {
  mContext = c;
  this.list = list;
 }

 // Total number of things contained within the adapter
 public int getCount() {
  return list.size();
 }

  // Require for structure, not really used in my code.
 public Object getItem(int position) {
  return null;
 }

 // Require for structure, not really used in my code. Can
 // be used to get the id of an item in the adapter for 
 // manual control. 
 public long getItemId(int position) {
  return position;
 }

 public View getView(int position,
                     View convertView, ViewGroup parent) {
  Button btn;
  if (convertView == null) {  
   // if it's not recycled, initialize some attributes
   btn = new Button(mContext);
   btn.setLayoutParams(new GridView.LayoutParams(100, 55));
   btn.setPadding(8, 8, 8, 8);
   } 
  else {
   btn = (Button) convertView;
  }
  btn.setText(list.get(position).getTitre());
  // filenames is an array of strings
  btn.setTextColor(Color.WHITE);
  btn.setBackgroundResource(R.drawable.button);
  btn.setId(position);

  return btn;
 }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37829010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档