2014-10-20 74 views
0

我的应用程序中有一个autocompletetextview,一个textview和一个按钮。当按钮被点击时,它将搜索数据库中的单词,等于textview上的单词。在TEXTVIEW中添加分数

FLOW:从autocompletetextview •字(输入通过点击imagebuttons)>搜索字(使用按钮) 条件: •如果单词在DATABSE,TextView的将显示相应的得分(也以dBASE ),那么自动完成的textview应该清除文本(做出另一个词)。

问题: 1.我如何添加第一个分数,这已经在textview和下一个单词的分数? 2.如何禁用AutoCompleteTextview中的“EditText”效果?我需要这个给予“优先级”,只通过imagebuttons进行输入(我的意思是每当你有一个autocompletetextview它就像你有一个编辑文本)。

任何建议将不胜感激。 我不知道该怎么做,所以我问这个问题。我是Android编程的新手。我希望你能理解我的问题,我的语法:)

继承人的代码我使用: MainActivity.java

DBAdapter dbHelper; 
TextView score; 
protected static final String TAG = null; 
String generatedString = " "; 
AutoCompleteTextView text; 
TextView timer; 
ImageButton searchWord; 
ImageButton image1, image2, image3, image4, image5, image6, image7, image8, 
image9, image10, image11, image12, image13, image14, image15, image16; 
private CountDownTimer countDownTimer; 
private boolean timeHasStarted = false; 


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

dbHelper =new DBAdapter(this); 
searchWord = (ImageButton) findViewById(R.id.searchWord); 
image1 = (ImageButton) findViewById(R.id.Button1); 

timer = (TextView) this.findViewById(R.id.timer); 
timer.setText("00:00:30"); 
countDownTimer = new MyCountDownTimer(30000,1000); 

final AutoCompleteTextView text = (AutoCompleteTextView) findViewById(R.id.textHere); 

final ImageButton image1 = (ImageButton) findViewById(R.id.Button1); 

final int[] myPics = { images here }; 


int rando = (int)(Math.random()* 5); 
image1.setImageResource(myPics[rando]); 
image1.setId(myPics[rando]); 


OnClickListener myCommoClickListner = new OnClickListener(){ 

@Override 
public void onClick(View arg0) { 
// start timer when 1 of 16 imagebutton is click (display letters = image in imagebutton 
}; 



image1.setOnClickListener(myCommoClickListner); 
} 

@TargetApi(Build.VERSION_CODES.GINGERBREAD) @SuppressLint("NewApi") public class MyCountDownTimer extends CountDownTimer{ 
public MyCountDownTimer(long millisInFuture, long countDownInterval){ 
super(millisInFuture, countDownInterval); 
} 

@TargetApi(Build.VERSION_CODES.GINGERBREAD) @SuppressLint("NewApi") @Override 
public void onTick(long millisUntilFinished) { 
long millis = millisUntilFinished; 
String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), 
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), 
TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))); 
System.out.println(hms); 
timer.setText(hms); 

} 

@Override 
public void onFinish() { 
timer.setText("Time's Up!"); 
} 
} 

//Search 
public void viewWord(View view) 
{ 
score = (TextView)findViewById(R.id.yourScore); 
String s1= search.getText().toString(); 
String s2= dbHelper.getData(s1); 
score.setText(s2); 
} 
} 

这是我将对DBAdapter代码中搜索代码: 公共字符串的getData(字符串字) { SQLiteDatabase db = helper.getWritableDatabase(); String [] columns = {DBHelper.WORD,DBHelper.SCORE};游标cursor = db.query(DBHelper.TABLE_NAME,columns,DBHelper.WORD +“='”+ word +“'”,null,null,null,null); StringBuffer buffer = new StringBuffer(); (cursor.moveToNext()) int index1 = cursor.getColumnIndex(DBHelper.WORD); int index2 = cursor.getColumnIndex(DBHelper.SCORE); String words = cursor.getString(index1); String score = cursor.getString(index2); buffer.append(score +“\ n”); } return buffer.toString(); }

回答

0

你的问题是有点不清楚,但我会尽力回答基于我如何解释这一点:

  1. 我如何添加率先得分,这已经是textview和下一个单词的分数?

我假设你要总结第一得分和下一个分数?

在您的DBAdapter类中创建一个类来处理您的搜索和求和。让光标移动到您的搜索值的第一个实例并将其存储为您的第一个值。接下来,有一个新的查询移动到数据库中的下一行。将此值存储为第二个值。关闭你的光标。总结第一个值和第二个值并将其返回。

也许你可以尝试一些与此类似:

public String getData(String word) 
    { 
    SQLiteDatabase db = helper.getWritableDatabase(); 
    String[] columns={DBHelper.WORD, DBHelper.SCORE}; 
    Cursor cursor=db.query(DBHelper.TABLE_NAME, columns, DBHelper.WORD+ "= '"+word+"'", null, null, null, null); 
    StringBuffer buffer = new StringBuffer(); 
    cursor.moveToFirst(); 
    // Given that you are only finding one instance, while is not necessary and in fact may not do what you want. It will return the LAST instance of your query value 
     int index1 =cursor.getColumnIndex(DBHelper.WORD); 
     int index2 =cursor.getColumnIndex(DBHelper.SCORE); 
     String words =cursor.getString(index1); 
     String score =cursor.getString(index2); 

    cursor=db.query(DBHelper.TABLE_NAME, columns, "*", null, null, null, null); // "*" should be the wildcard for SQL 

     cursor.moveToNext(); 
     int indexSecond1 =cursor.getColumnIndex(DBHelper.WORD); 
     int indexSecond2 =cursor.getColumnIndex(DBHelper.SCORE); 
     // Do something with the data 


     buffer.append(score +"\n"); 

    return buffer.toString(); 
} 
  • 我怎样才能禁止在AutoCompleteTextview了 “的EditText” 的效果?我需要这个给予“优先级”,只通过imagebuttons进行输入(我的意思是每当你有一个autocompletetextview它就像你有一个编辑文本)。
  • 您可以尝试在你的XML

    或编程设置inputTypenoneyourEditText.setKeyListener(null);

    +0

    是的,你是正确的。但是我仍然不知道如何去做第一个。请帮帮我。 – 2014-10-20 18:59:56

    +0

    修改您的getData以获得附加查询。 – erad 2014-10-20 20:51:42