Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 溢出菜单更改listview数据_Java_Android_Listview_Android Sqlite_Pull To Refresh - Fatal编程技术网

Java 溢出菜单更改listview数据

Java 溢出菜单更改listview数据,java,android,listview,android-sqlite,pull-to-refresh,Java,Android,Listview,Android Sqlite,Pull To Refresh,我是android新手,在我的listview中使用基于自定义的应用程序我的所有数据都来自数据库SQLite,它在我的数据库中有不同的表我的问题是我想从溢出菜单中的溢出菜单更改我的listview数据我有不同的单选按钮如果任何用户选择了任何特定的单选,如果它检查数据listview必须被改变了,但问题是我的代码和图片并没有刷新,我到底想说什么 如果有用户单击 在kings James版本中,我的数据库表名更改为t_kjv,它存在于我的数据库中,用户单击了一个美国标准 表名更改为t_asv 但问题

我是android新手,在我的listview中使用基于自定义的应用程序我的所有数据都来自数据库SQLite,它在我的数据库中有不同的表我的问题是我想从溢出菜单中的溢出菜单更改我的listview数据我有不同的单选按钮如果任何用户选择了任何特定的单选,如果它检查数据listview必须被改变了,但问题是我的代码和图片并没有刷新,我到底想说什么

如果有用户单击 在kings James版本中,我的数据库表名更改为t_kjv,它存在于我的数据库中,用户单击了一个美国标准 表名更改为t_asv 但问题是数据库listview不会刷新,并且不会对我的listview产生任何影响

这是我的cod我的默认设置我的表名是t_kjv;当活动加载时

这是我的密码


这是因为您只在onCreate查询游标


您需要从OnOptions ItemSelected调用setData。此外,在交换适配器中的项目后,您可能需要调用baseAdapter.notifyDatasetChanged。

您的类应如下所示:

public class ALLVERSE extends AppCompatActivity implements
    NavigationView.OnNavigationItemSelectedListener, TextToSpeech.OnInitListener {

  private ListView mylistview;
  private ArrayList<String> versenumber = new ArrayList<>();
  private ArrayList<String> verselist = new ArrayList<>();
  private ArrayList<String> id = new ArrayList<>();
  private ArrayList<String> refernce = new ArrayList<>();
  private DatabaseHelper mDBHelper;
  private SQLiteDatabase mDb;
  private int booknumber;
  private int chapternumber;
  private String bookname;
  public int versepos;
  private TextView booknametitle;
  TextToSpeech textToSpeech;
  private static SharedPreferences sharedPreferences;
  int result;
  private static final int MY_DATA_CHECK_CODE = 0;
  BaseAdapter baseAdapter;

  SwipeRefreshLayout pullToRefresh;


  LinearLayout linearLayout;


  @Override
  protected void onDestroy() {
    if (textToSpeech != null) {
      textToSpeech.stop();
      textToSpeech.shutdown();

    }
    super.onDestroy();

  }


  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_allverse);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    booknametitle = findViewById(R.id.bookname);

    linearLayout = findViewById(R.id.nightmode);
    final Intent mIntent = getIntent();
    booknumber = mIntent.getIntExtra("Boooknumber", 0);
    chapternumber = mIntent.getIntExtra("Chapternumber", 0);
    bookname = mIntent.getStringExtra("Bookname");
    versepos = mIntent.getIntExtra("versenumber", 1);

    SharedPreferences sharedPreferences = this.getSharedPreferences("DATA", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putInt("versenumber", versepos);
    editor.commit();

    booknametitle.setText(bookname.toString() + "   " + chapternumber);

    setSupportActionBar(toolbar);

    toolbar.setTitle(bookname + ":" + chapternumber);

    textToSpeech = new TextToSpeech(this, this);

    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
      getSupportActionBar().setDisplayHomeAsUpEnabled(true);
      getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
        this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    mylistview = findViewById(R.id.mylistview);
    setData("t_kjv");

    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
      @Override
      public void run() {
        if (DefaultSettings.autospeak(ALLVERSE.this)) {
          speakOut(verselist.get(versepos - 1));
        }
        //speak after 1000ms
      }
    }, 1000);

    mylistview.setSelection(Integer.valueOf(versepos) - 1);


  }


  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.fullsepak, menu);
    return true;


  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    // handle arrow click here
    if (item.getItemId() == android.R.id.home) {
      onBackPressed();
    } else if (item.getItemId() == R.id.fullspeak) {

      speakfull(verselist.toString());

    } else if (item.getItemId() == R.id.kjv) {
      if (item.isChecked()) {
        item.setChecked(false);
      } else {
        item.setChecked(true);
      }

      setData("t_kjv");

      baseAdapter.notifyDataSetChanged();


    } else if (item.getItemId() == R.id.asv) {
      if (item.isChecked()) {
        item.setChecked(false);
      } else {
        item.setChecked(true);
      }
      setData("t_asv");

    } else if (item.getItemId() == R.id.darby) {
      if (item.isChecked()) {
        item.setChecked(false);
      } else {
        item.setChecked(true);
      }

    } else if (item.getItemId() == R.id.bbe) {
      if (item.isChecked()) {
        item.setChecked(false);
      } else {
        item.setChecked(true);
      }
      setData("t_bbe");

      Toast.makeText(this, "change", Toast.LENGTH_SHORT).show();
    }

    return super.onOptionsItemSelected(item);
  }


  private void setData(String tablename) {
    versenumber.clear();
    verselist.clear();
    id.clear();
    refernce.clear();

    mDBHelper = new DatabaseHelper(this);
    mDb = mDBHelper.getReadableDatabase();
    Cursor cursor = mDb.rawQuery(
        "SELECT id, v, t from " + tablename + " where b=" + booknumber + " AND c=" + chapternumber
            + ";", new String[]{});
    if (cursor != null && cursor.getCount() > 0) {
      if (cursor.moveToFirst()) {
        do {
          id.add(cursor.getString(0));
          versenumber.add(cursor.getString(1));
          verselist.add(cursor.getString(2));

          refernce.add(bookname + " " + chapternumber);

        }

        while (cursor.moveToNext());
      }
      if (baseAdapter != null) {
        baseAdapter.notifyDataSetChanged();
      } else {

        baseAdapter = new BaseAdapter(this, versenumber, id, verselist, refernce);
        mylistview.setAdapter(baseAdapter);
      }
    }
  }

  @Override
  public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    Fragment fragment;
    int id = item.getItemId();

    if (id == R.id.home) {

      Intent intent = new Intent(this, MainActivity.class);
      startActivity(intent);

    } else if (id == R.id.favoruite) {
      Intent intent = new Intent(this, Favourite.class);
      startActivity(intent);
    } else if (id == R.id.setting) {
      Intent intent = new Intent(this, Settings.class);
      startActivity(intent);
    } else if (id == R.id.alert) {
      Intent intent = new Intent(this, Reminder.class);
      startActivity(intent);
    } else if (id == R.id.nav_share) {

    } else if (id == R.id.nav_send) {

    }
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
  }

  private void speakOut(String text) {
    DefaultSettings.speed(this);

    textToSpeech.setPitch(DefaultSettings.pitchvalue);

    textToSpeech.setSpeechRate(DefaultSettings.speedvalue);

    textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null);

  }

  @Override
  public void onBackPressed() {
    super.onBackPressed();

    if (textToSpeech != null) {
      textToSpeech.stop();
      textToSpeech.shutdown();

    }
  }

  private void speakfull(String text) {
    ///
    Pattern re = Pattern
        .compile("[^.!?\\s][^.!?]*(?:[.!?](?!['\"]?\\s|$)[^.!?]*)*[.!?]?['\"]?(?=\\s|$)",
            Pattern.MULTILINE | Pattern.COMMENTS);
    Matcher reMatcher = re.matcher(text);
    /////
    int position = 0;
    int sizeOfChar = text.length();
    String testStri = text.substring(position, sizeOfChar);
    while (reMatcher.find()) {
      String temp = "";

      try {

        temp = testStri.substring(text.lastIndexOf(reMatcher.group()),
            text.indexOf(reMatcher.group()) + reMatcher.group().length());

        DefaultSettings.speed(this);
        textToSpeech.setPitch(DefaultSettings.pitchvalue);

        textToSpeech.setSpeechRate(DefaultSettings.speedvalue);

        textToSpeech.speak(temp, TextToSpeech.QUEUE_ADD, null);


      } catch (Exception e) {
        temp = testStri.substring(0, testStri.length());

        textToSpeech.speak(temp, TextToSpeech.QUEUE_ADD, null);
        break;


      }
    }
  }

  @Override
  public void onInit(int status) {

    if (status == TextToSpeech.SUCCESS) {

      int result = textToSpeech.setLanguage(Locale.US);

      // tts.setPitch(5); // set pitch level

      // tts.setSpeechRate(2); // set speech speed rate

      if (result == TextToSpeech.LANG_MISSING_DATA
          || result == TextToSpeech.LANG_NOT_SUPPORTED) {
        Log.e("TTS", "Language is not supported");
      } else {

      }

    } else {
      Log.e("TTS", "Initilization Failed");
    }

  }
}

我还想在我的表中设置默认名称,以便在“活动”加载时设置默认表名称etdatat_bbe;这将使用onCreate中的默认tablename调用setData方法。我认为这不应该是个问题。如果有帮助,请向上投票,如果有效,请接受。它不会影响我的列表视图这里的代码else ifitem.getItemId==R.id.bbe{if item.isChecked item.setCheckedfalse;else item.setCheckedtrue;setDatat_bbe;Toast.makeTextthis,change,Toast.LENGTH_SHORT.show;}你能用我加的方法试试吗?是的,我尝试了你的方法,我会更新我的代码,你现在可以查看我不知道,请帮助我
public class ALLVERSE extends AppCompatActivity implements
    NavigationView.OnNavigationItemSelectedListener, TextToSpeech.OnInitListener {

  private ListView mylistview;
  private ArrayList<String> versenumber = new ArrayList<>();
  private ArrayList<String> verselist = new ArrayList<>();
  private ArrayList<String> id = new ArrayList<>();
  private ArrayList<String> refernce = new ArrayList<>();
  private DatabaseHelper mDBHelper;
  private SQLiteDatabase mDb;
  private int booknumber;
  private int chapternumber;
  private String bookname;
  public int versepos;
  private TextView booknametitle;
  TextToSpeech textToSpeech;
  private static SharedPreferences sharedPreferences;
  int result;
  private static final int MY_DATA_CHECK_CODE = 0;
  BaseAdapter baseAdapter;

  SwipeRefreshLayout pullToRefresh;


  LinearLayout linearLayout;


  @Override
  protected void onDestroy() {
    if (textToSpeech != null) {
      textToSpeech.stop();
      textToSpeech.shutdown();

    }
    super.onDestroy();

  }


  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_allverse);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    booknametitle = findViewById(R.id.bookname);

    linearLayout = findViewById(R.id.nightmode);
    final Intent mIntent = getIntent();
    booknumber = mIntent.getIntExtra("Boooknumber", 0);
    chapternumber = mIntent.getIntExtra("Chapternumber", 0);
    bookname = mIntent.getStringExtra("Bookname");
    versepos = mIntent.getIntExtra("versenumber", 1);

    SharedPreferences sharedPreferences = this.getSharedPreferences("DATA", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putInt("versenumber", versepos);
    editor.commit();

    booknametitle.setText(bookname.toString() + "   " + chapternumber);

    setSupportActionBar(toolbar);

    toolbar.setTitle(bookname + ":" + chapternumber);

    textToSpeech = new TextToSpeech(this, this);

    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
      getSupportActionBar().setDisplayHomeAsUpEnabled(true);
      getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
        this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    mylistview = findViewById(R.id.mylistview);
    setData("t_kjv");

    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
      @Override
      public void run() {
        if (DefaultSettings.autospeak(ALLVERSE.this)) {
          speakOut(verselist.get(versepos - 1));
        }
        //speak after 1000ms
      }
    }, 1000);

    mylistview.setSelection(Integer.valueOf(versepos) - 1);


  }


  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.fullsepak, menu);
    return true;


  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    // handle arrow click here
    if (item.getItemId() == android.R.id.home) {
      onBackPressed();
    } else if (item.getItemId() == R.id.fullspeak) {

      speakfull(verselist.toString());

    } else if (item.getItemId() == R.id.kjv) {
      if (item.isChecked()) {
        item.setChecked(false);
      } else {
        item.setChecked(true);
      }

      setData("t_kjv");

      baseAdapter.notifyDataSetChanged();


    } else if (item.getItemId() == R.id.asv) {
      if (item.isChecked()) {
        item.setChecked(false);
      } else {
        item.setChecked(true);
      }
      setData("t_asv");

    } else if (item.getItemId() == R.id.darby) {
      if (item.isChecked()) {
        item.setChecked(false);
      } else {
        item.setChecked(true);
      }

    } else if (item.getItemId() == R.id.bbe) {
      if (item.isChecked()) {
        item.setChecked(false);
      } else {
        item.setChecked(true);
      }
      setData("t_bbe");

      Toast.makeText(this, "change", Toast.LENGTH_SHORT).show();
    }

    return super.onOptionsItemSelected(item);
  }


  private void setData(String tablename) {
    versenumber.clear();
    verselist.clear();
    id.clear();
    refernce.clear();

    mDBHelper = new DatabaseHelper(this);
    mDb = mDBHelper.getReadableDatabase();
    Cursor cursor = mDb.rawQuery(
        "SELECT id, v, t from " + tablename + " where b=" + booknumber + " AND c=" + chapternumber
            + ";", new String[]{});
    if (cursor != null && cursor.getCount() > 0) {
      if (cursor.moveToFirst()) {
        do {
          id.add(cursor.getString(0));
          versenumber.add(cursor.getString(1));
          verselist.add(cursor.getString(2));

          refernce.add(bookname + " " + chapternumber);

        }

        while (cursor.moveToNext());
      }
      if (baseAdapter != null) {
        baseAdapter.notifyDataSetChanged();
      } else {

        baseAdapter = new BaseAdapter(this, versenumber, id, verselist, refernce);
        mylistview.setAdapter(baseAdapter);
      }
    }
  }

  @Override
  public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    Fragment fragment;
    int id = item.getItemId();

    if (id == R.id.home) {

      Intent intent = new Intent(this, MainActivity.class);
      startActivity(intent);

    } else if (id == R.id.favoruite) {
      Intent intent = new Intent(this, Favourite.class);
      startActivity(intent);
    } else if (id == R.id.setting) {
      Intent intent = new Intent(this, Settings.class);
      startActivity(intent);
    } else if (id == R.id.alert) {
      Intent intent = new Intent(this, Reminder.class);
      startActivity(intent);
    } else if (id == R.id.nav_share) {

    } else if (id == R.id.nav_send) {

    }
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
  }

  private void speakOut(String text) {
    DefaultSettings.speed(this);

    textToSpeech.setPitch(DefaultSettings.pitchvalue);

    textToSpeech.setSpeechRate(DefaultSettings.speedvalue);

    textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null);

  }

  @Override
  public void onBackPressed() {
    super.onBackPressed();

    if (textToSpeech != null) {
      textToSpeech.stop();
      textToSpeech.shutdown();

    }
  }

  private void speakfull(String text) {
    ///
    Pattern re = Pattern
        .compile("[^.!?\\s][^.!?]*(?:[.!?](?!['\"]?\\s|$)[^.!?]*)*[.!?]?['\"]?(?=\\s|$)",
            Pattern.MULTILINE | Pattern.COMMENTS);
    Matcher reMatcher = re.matcher(text);
    /////
    int position = 0;
    int sizeOfChar = text.length();
    String testStri = text.substring(position, sizeOfChar);
    while (reMatcher.find()) {
      String temp = "";

      try {

        temp = testStri.substring(text.lastIndexOf(reMatcher.group()),
            text.indexOf(reMatcher.group()) + reMatcher.group().length());

        DefaultSettings.speed(this);
        textToSpeech.setPitch(DefaultSettings.pitchvalue);

        textToSpeech.setSpeechRate(DefaultSettings.speedvalue);

        textToSpeech.speak(temp, TextToSpeech.QUEUE_ADD, null);


      } catch (Exception e) {
        temp = testStri.substring(0, testStri.length());

        textToSpeech.speak(temp, TextToSpeech.QUEUE_ADD, null);
        break;


      }
    }
  }

  @Override
  public void onInit(int status) {

    if (status == TextToSpeech.SUCCESS) {

      int result = textToSpeech.setLanguage(Locale.US);

      // tts.setPitch(5); // set pitch level

      // tts.setSpeechRate(2); // set speech speed rate

      if (result == TextToSpeech.LANG_MISSING_DATA
          || result == TextToSpeech.LANG_NOT_SUPPORTED) {
        Log.e("TTS", "Language is not supported");
      } else {

      }

    } else {
      Log.e("TTS", "Initilization Failed");
    }

  }
}