Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.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/2/cmake/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 如何从JSON为列表视图设置条件_Java_Android_Json_Listview - Fatal编程技术网

Java 如何从JSON为列表视图设置条件

Java 如何从JSON为列表视图设置条件,java,android,json,listview,Java,Android,Json,Listview,我想让listview中的listview数据只来自windy的名称,来自我的json文件。有人能告诉我哪里出了错吗? 我在json数组中设置一个条件,将其放入listview。 它应该显示json中的所有数据,并将其放入listview,因为x==y是正确的,但什么都没有发生,只有空的listview。 当我制作System.out.printlnx++y时;为了确保没有空,它会显示x和y的值,即windy和windy,根据我设置的条件,它应该只在列表视图中显示windy的名称。但是当我做x的

我想让listview中的listview数据只来自windy的名称,来自我的json文件。有人能告诉我哪里出了错吗? 我在json数组中设置一个条件,将其放入listview。 它应该显示json中的所有数据,并将其放入listview,因为x==y是正确的,但什么都没有发生,只有空的listview。 当我制作System.out.printlnx++y时;为了确保没有空,它会显示x和y的值,即windy和windy,根据我设置的条件,它应该只在列表视图中显示windy的名称。但是当我做x的时候显示从json到listview的所有数据。 非常感谢你们

这是我做的条件的零件代码

for(int i = 0; i < str_json.length(); i++){
JSONObject ar = str_json.getJSONObject(i);
String x = ar.getString("nama");
String y = "windy";
System.out.println(x +" "+ y);

//the conditon that i mean. 
//when i make if(x!=y), it show all the data from json to listview, not only "windy" 


if( x == y){

HashMap<String, String> map = new HashMap<String, String>();

String nama = ar.getString("nama");
String judul = ar.getString("judul");
String komen = ar.getString("komen");
String jawaban = ar.getString("jawaban");
String created_at = ar.getString("created_at");


map.put(tanya_nama, nama);
map.put(tanya_judul, judul);
map.put(tanya_komen, komen);
map.put(tanya_jawaban, jawaban);
map.put(tanya_waktu, created_at);

data_map.add(map);
这是完整的代码

public class semuatempat extends ListActivity {

static String tanya_nama = "nama";
static String tanya_judul = "judul";
static String tanya_komen = "komen";
static String tanya_jawaban = "jawaban";
static String tanya_waktu = "created_at";

JSONArray str_json = null;
public String lo_Koneksi,isi ;

 // Search EditText
 EditText inputSearch;
 //Listview Adapter
 SimpleAdapter adapter;

 ListView lv;

private ProgressDialog pDialog;
ArrayList<HashMap<String, String>> data_map = new ArrayList<HashMap<String, String>>  ();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.utama);

    Koneksi lo_Koneksi = new Koneksi();
    isi = lo_Koneksi.isi_koneksi();
    new AmbilData().execute();

}



class AmbilData extends AsyncTask<String, String, String> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(semuatempat.this);
        pDialog.setMessage("loading ...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    protected String doInBackground(String... args) {


        String link_url = isi+"komentar.php";
        JSONParsena jParser = new JSONParsena();
        JSONObject json = jParser.AmbilJson(link_url);

        try {
            str_json = json.getJSONArray("komentar");
            DatabaseHandler db = new DatabaseHandler(getApplicationContext());

            /**
             * Hashmap to load data from the Sqlite database
             **/
             HashMap<String,String> user = new HashMap<String, String>();
             user = db.getUserDetails();



             for(int i = 0; i < str_json.length(); i++){
                JSONObject ar = str_json.getJSONObject(i);
                String x = ar.getString("nama");
                String y = "windy";
                System.out.println(x +" "+ y);

                if( x == y){

                HashMap<String, String> map = new HashMap<String, String>();

                String nama = ar.getString("nama");
                String judul = ar.getString("judul");
                String komen = ar.getString("komen");
                String jawaban = ar.getString("jawaban");
                String created_at = ar.getString("created_at");


                map.put(tanya_nama, nama);
                map.put(tanya_judul, judul);
                map.put(tanya_komen, komen);
                map.put(tanya_jawaban, jawaban);
                map.put(tanya_waktu, created_at);

                data_map.add(map);
                }
                else{
                    System.out.println(" cacad ");
                }

             }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }

    protected void onPostExecute(String file_url) {
        pDialog.dismiss();
        runOnUiThread(new Runnable() {
             public void run() {

                 adapter = new SimpleAdapter(
                        semuatempat.this, data_map,
                        R.layout.list_item, new String[] { tanya_nama, tanya_judul, tanya_komen,tanya_jawaban,tanya_waktu}, 
                        new int[] {R.id.nama, R.id.alamat, R.id.lat,R.id.lng,R.id.waktu});
                setListAdapter(adapter);

            }
        });

问题在于您编写的字符串比较函数:

x == y
将其替换为:

if (x.equals(y))
因为x和y是字符串。

更改

如果x==y

如果x.equalsy,因为您正在比较字符串

那么在你的任务中,也许你应该改变

类AmbilData扩展AsyncTaskString、String、String

类AmbilData扩展了AsyncTaskString、String、HashMap{

在方法doInBackground中

 protected String doInBackground(String... args) {
    // rest of your method

    return map;
  }
将onPostExecute方法更改为:

protected void onPostExecute(HashMap<String,String> map) {
// adapting your hashmap to listview
    }
我还没有测试它。但是,它应该可以工作。

x和y是字符串,所以尝试使用等于而不是==同样,您已经保护了字符串doInBackground,但返回null。