Android 如何通过循环播放从sqlite非同步(排队)到videoView的多个视频?

Android 如何通过循环播放从sqlite非同步(排队)到videoView的多个视频?,android,sqlite,while-loop,android-videoview,Android,Sqlite,While Loop,Android Videoview,我正在做一个手指手语应用程序。 我已设法从用户输入中获取字符串的子字符串。 现在,每个字母都有来自我的sqlite的相应视频文件,我希望它在每个字母之后的视频视图中一次播放一个 表: |字母|视频文件名| |a |字母a| |b |字母b| |字母c等等 public void fingerspell(View v) { CharSequence charSequence = etsearch.getText(); String s = charSequence.toStrin

我正在做一个手指手语应用程序。 我已设法从用户输入中获取字符串的子字符串。 现在,每个字母都有来自我的sqlite的相应视频文件,我希望它在每个字母之后的视频视图中一次播放一个

表:

|字母|视频文件名|

|a |字母a|

|b |字母b|

|字母c等等

 public void fingerspell(View v) {
    CharSequence charSequence = etsearch.getText();
    String s = charSequence.toString();
    int startingletter = 0;
    int endingletter = 1;
    String desiredString;
    int wordlength = etsearch.length();
        do{

        desiredString = s.substring(startingletter, endingletter);
        Cursor c = db.rawQuery("SELECT * FROM tblletters WHERE letter like '" + desiredString + "'", null);
            while (c.moveToNext()) {
                Toast.makeText(getApplicationContext(), desiredString, Toast.LENGTH_LONG).show();
                String video = c.getString(1);
                int videoResource = getResources().
                        getIdentifier(video, "raw", getPackageName());
                String path = "android.resource://" + getPackageName() + "/" + videoResource;
                videoview.setVideoURI(Uri.parse(path));
                videoview.start();
                videoview.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    public void onCompletion(MediaPlayer mp) {
                        //can't put startingletter++ here
                    }
                });


                startingletter++;
                endingletter++;
            }
         startingletter++;
            endingletter++;
    }while(startingletter<wordlength);
}
public void fingerspell(视图五){
CharSequence CharSequence=etsearch.getText();
字符串s=charSequence.toString();
int startingletter=0;
int-endingletter=1;
需要字符串的字符串;
int-wordlength=etsearch.length();
做{
desiredString=s.substring(起始字母、结束字母);
游标c=db.rawQuery(“从tblletters中选择*,其中的字母为“+”desiredString+”,null);
while(c.moveToNext()){
Toast.makeText(getApplicationContext(),desiredString,Toast.LENGTH_LONG).show();
String video=c.getString(1);
int videoResource=getResources()。
getIdentifier(视频,“原始”,getPackageName());
String path=“android.resource://”+getPackageName()+“/”+videoResource;
setVideoURI(Uri.parse(path));
videoview.start();
videoview.setOnCompletionListener(新的MediaPlayer.OnCompletionListener(){
完成时的公共作废(MediaPlayer mp){
//无法将startingletter++放在此处
}
});
startingletter++;
endingletter++;
}
startingletter++;
endingletter++;

}虽然(startingletter我找到了一种方法,但我不确定这是否是正确的编码,但它现在正在工作。根据所了解的情况,我正在循环videoview.setOnCompletionListener,即使它已经是一个循环,并且我还将递增变量声明为全局变量,以便可以从内部类访问它。我对编程不熟悉

CharSequence charSequence = etsearch.getText();
        String s = charSequence.toString();
        int startingletter = 0;
        String desiredString;
        int wordlength = etsearch.length();
        final ArrayList<String> list = new ArrayList<String>();

        while (startingletter < wordlength) {
            desiredString = s.substring(startingletter, startingletter + 1);
            list.add(desiredString);
            startingletter++;
        }


        // Toast.makeText(getApplicationContext(), list.get(3), Toast.LENGTH_LONG).show();


        listsize = list.size();
        pogi = list.get(0);

        // Toast.makeText(getApplicationContext(), pogi, Toast.LENGTH_LONG).show();
        Cursor c = db.rawQuery("SELECT * FROM tblletters WHERE letter like '" + pogi + "'", null);
        while (c.moveToNext()) {
            String video = c.getString(1);
            int videoResource = getResources().
                    getIdentifier(video, "raw", getPackageName());
            String path = "android.resource://" + getPackageName() + "/" + videoResource;
            videoview.setVideoURI(Uri.parse(path));
            videoview.start();
        }


        videoview.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                halimaw++;
                if (halimaw < listsize) {
                    pogi = list.get(halimaw);

                    Cursor c = db.rawQuery("SELECT * FROM tblletters WHERE letter like '" + pogi + "'", null);
                    c.moveToNext();
                    String video = c.getString(1);
                    int videoResource = getResources().
                            getIdentifier(video, "raw", getPackageName());
                    String path = "android.resource://" + getPackageName() + "/" + videoResource;
                    videoview.setVideoURI(Uri.parse(path));
                    videoview.start();
                } else {
                    halimaw = 0;
                    pogi = "";
                }
                //Toast.makeText(getApplicationContext(), "tapos na", Toast.LENGTH_LONG).show();
            }
        });
CharSequence CharSequence=etsearch.getText();
字符串s=charSequence.toString();
int startingletter=0;
需要字符串的字符串;
int-wordlength=etsearch.length();
最终ArrayList=新ArrayList();
while(起始字母<字长){
desiredString=s.substring(起始字母,起始字母+1);
列表。添加(所需字符串);
startingletter++;
}
//Toast.makeText(getApplicationContext(),list.get(3),Toast.LENGTH_LONG.show();
listsize=list.size();
pogi=list.get(0);
//Toast.makeText(getApplicationContext(),pogi,Toast.LENGTH_LONG.show();
游标c=db.rawQuery(“从tblletters中选择*,其中的字母类似于“+pogi+”,null);
while(c.moveToNext()){
String video=c.getString(1);
int videoResource=getResources()。
getIdentifier(视频,“原始”,getPackageName());
String path=“android.resource://”+getPackageName()+“/”+videoResource;
setVideoURI(Uri.parse(path));
videoview.start();
}
videoview.setOnCompletionListener(新的MediaPlayer.OnCompletionListener(){
完成时的公共作废(MediaPlayer mp){
halimaw++;
if(halimaw<列表大小){
pogi=list.get(halimaw);
游标c=db.rawQuery(“从tblletters中选择*,其中的字母类似于“+pogi+”,null);
c、 moveToNext();
String video=c.getString(1);
int videoResource=getResources()。
getIdentifier(视频,“原始”,getPackageName());
String path=“android.resource://”+getPackageName()+“/”+videoResource;
setVideoURI(Uri.parse(path));
videoview.start();
}否则{
halimaw=0;
pogi=“”;
}
//Toast.makeText(getApplicationContext(),“tapos na”,Toast.LENGTH_LONG.show();
}
});