SQLite数据库注释功能

时间:2019-02-03 21:52:48

标签: sqlite comments repeat

代码没有错误。但是,我试图建立一个注释部分,其中的名称和注释将保存在数据库(SQLite)中。

1)从另一个页面返回后,它不会停留在Textview中。 2)例如,我评论了一次,并显示了评论。我再次发表评论,它实际上重新显示了以前的评论和新的评论。

public class BuyerHome extends AppCompatActivity {
DatabaseHelper2 myDB;
//EditText name,comment;

EditText nameIn;
EditText commentIn;
TextView viewComment;

Button postComment;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_buyer_home);

    nameIn = (EditText) findViewById(R.id.nameInput);
    commentIn = (EditText) findViewById(R.id.commentText);
    viewComment = (TextView) findViewById(R.id.viewCommentText);
    myDB = new DatabaseHelper2(this);



    postComment = (Button) findViewById(R.id.buttonComment);

    postComment.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String name = nameIn.getText().toString();
            String comment = commentIn.getText().toString();

            if(nameIn.length()!=0 && commentIn.length()!=0){
                AddData(name,comment);
                nameIn.setText("");
                commentIn.setText("");
            }else{
                Toast.makeText(BuyerHome.this, "Insert fields", 
Toast.LENGTH_SHORT).show();
            }

            Cursor data = myDB.getContents();

            if(data.getCount()==0){
                Toast.makeText(BuyerHome.this, "Database empty", 
Toast.LENGTH_SHORT).show();
            }
            else{

                while(data.moveToNext()){
                    viewComment.append(data.getString(1));
                    viewComment.append(data.getString(2)+"\n");
                }
            }

            //viewComment.append("\n"+name+":"+comment);




    }
});
}
    public void AddData(String name,String comment){
    boolean insertData = myDB.insertData(name,comment);

    if(insertData==true){
        Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
    }else{
        Toast.makeText(this, "Fail", Toast.LENGTH_SHORT).show();
    }
      }
}

1)只要页面可用,我希望过去的评论在那里。 2)我只希望显示最新评论(在过去评论的顶部),而不希望过去评论(再次显示)以及新评论。

1 个答案:

答案 0 :(得分:0)

对于较旧的评论,我建议使用第二种视图。您还需要一种确定最新信息而不是旧评论的方法。

在第二个视图下面的示例中,是一个Listview(这使您可以单击特定的消息,也许将其引用,或者提取名称)。

该示例提供了两种通过id column 来确定最后发布的评论的方法(请注意,实际上将 _id 用作列名,因为这样可以使用Cursor Adapter用于ListView,这可能是有利的)。

为了方便在返回 onResume 方法之后显示注释,该注释已在活动中被覆盖。

这是代码:-

DatabaseHelper2.java

error: no matching function for call to 'foo0'
  foo0<void, int>(bar<int>);
  ^~~~~~~~~~~~~~~
note: candidate template ignored: could not match 'function<void (int, type-parameter-0-1...)>' against 'void (*)(int)'
void foo0(std::function<RetType(ArgTypes...)> f) {}
  • 请注意,尚未使用 timestamp 列,但可能会使用它,因为添加行(注释)时,当前时间戳将自动用于设置该列。 / p>

  • 请注意,getLatestComment和getAllButLatestComment方法返回具有适当行的Cursor。

BuyerHome.java

window.location.pathname.split("/").pop()

结果

enter image description here

  • 突出显示的行是最新评论。
  • 最新评论之后是所有其他评论的列表。