2017-07-31 66 views
0

我从json文件读取数据到适配器,并在main.java下创建,当我尝试运行它时,它会显示任何内容。应用程序不会第一次运行,但当单击菜单中的项目时,它将运行

我试过菜单onclick下的相同代码,它的工作原理是,我希望它在应用第一次被毁掉时出现。

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    String url = "myjsonurl.php"; 
    JSONArray jArray; 
    ProgressDialog dialog; 
    ListView mycustomlist = null; 
    WebView mywebview =null; 
    CustomAdapter myadapter = null; 

    ArrayList<news> mydatalist = new ArrayList<news>(); 
    ArrayList<news> maşetData = new ArrayList<news>(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     myadapter = new CustomAdapter(this, mydatalist); 
     mycustomlist = (ListView)findViewById(R.id.listview); 
     mycustomlist.setAdapter(myadapter); 
     dialog = new ProgressDialog(this); 
     dialog.setMessage("Loading...."); 
     dialog.show(); 

     StringRequest request = new StringRequest(url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String string) { 
       parseJsonData(string); 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError volleyError) { 
       Toast.makeText(getApplicationContext(), "Some error occurred!!", Toast.LENGTH_SHORT).show(); 
       dialog.dismiss(); 
       dialog.cancel(); 
      } 
     }); 

     RequestQueue rQueue = Volley.newRequestQueue(MainActivity.this); 
     rQueue.add(request); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 


     /* FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
*/ 



     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.setDrawerListener(toggle); 
     toggle.syncState(); 

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

    public void parseJsonData(final String jsonString) { 

     try { 
      jArray = new JSONArray(jsonString); 

      for(int i=0; i < jArray.length(); i++) { 

       JSONObject jObject = jArray.getJSONObject(i); 
       news news1 = new news(); 

       news1.setTitle(jObject.getString("title")); 
       news1.setContent(Html.fromHtml(jObject.getString("content"))); 
       news1.setDate(jObject.getString("date")); 
       news1.setImage("http://www.bolgegundem.com/d/news/" + jObject.getString("image").concat(".jpg")); 
       news1.setId(jObject.getString("id")); 
       news1.setCategory(jObject.getString("category")); 
       news1.set__comment_count(jObject.getString("__comment_count")); 
       news1.setHeadline(jObject.getString("headline")); 

       mydatalist.add(news1); 




       // http://www.bolgegundem.com/d/gallery/81_2.jpg 
       /* images.add("http://www.bolgegundem.com/d/gallery/" + id + "_" + imgUrl.replace(",", ".jpg"));*/ 
       // al.add(title); 
       //imagelinks[i] = "http://www.bolgegundem.com/d/gallery/" + id + "_" + i + ".jpg"; 

      } 


      // ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_activated_1, al); 

      //listview.setAdapter(adapter); 

      // listview.setBackgroundColor(rgb(0, 255, 255)); 
       /* listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
        if(i < links.length){ 
         Uri uri = Uri.parse(links[i]); 
         Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
         startActivity(intent); 
        } 
       } 
      });*/ 
      if (dialog.isShowing()){ 
       dialog.dismiss(); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      dialog.dismiss(); 
     } 
    } 

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

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

     if (id == R.id.manşet) { 
      // Handle the camera action 
     } else if (id == R.id.Anasayfa) { 

      myadapter = new CustomAdapter(this, mydatalist); 
      mycustomlist = (ListView)findViewById(R.id.listview); 
      mycustomlist.setAdapter(myadapter); 


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

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

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

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

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


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


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

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


     } 

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

我的适配器类是这里

public class CustomAdapter extends BaseAdapter { 

    Context mycontext = null; 
    ArrayList<news> mydatalist; 

    public CustomAdapter(Context mycontext, ArrayList<news> mydatalist) 
    { 

     this.mycontext = mycontext; 
     this.mydatalist = mydatalist; 

    } 

    @Override 
    public int getCount() { 
     return this.mydatalist.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return this.mydatalist.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    @SuppressLint("InflateParams") 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater myinflater = (LayoutInflater)mycontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     ViewHolder myholder = null; 
     if(convertView == null) 
     { 
      convertView = myinflater.inflate(R.layout.customlayout, null); 

      myholder = new ViewHolder(); 
      myholder.mytextview1 = (TextView)convertView.findViewById(R.id.mytextview1); 
      myholder.mytextview2 = (TextView)convertView.findViewById(R.id.mytextview2); 
      myholder.mytextview3 = (TextView)convertView.findViewById(R.id.mytextview3); 
      myholder.myimageview1 = (ImageView)convertView.findViewById(R.id.imageView); 

      convertView.setTag(myholder); 
     } 
     else 
     { 
      myholder = (ViewHolder)convertView.getTag(); 
     } 


     myholder.mytextview1.setText(mydatalist.get(position).getTitle()); 
     myholder.mytextview2.setText(mydatalist.get(position).getContent()); 
     myholder.mytextview3.setText(mydatalist.get(position).getDate()); 
     myholder.myimageview1.setImageResource(R.drawable.bolgegundem); 
     new DownloadImageTask(myholder.myimageview1).execute(mydatalist.get(position).getImage()); 

     return convertView; 
    } 

    static class ViewHolder 
    { 
      public TextView mytextview1; 
      public TextView mytextview2; 
      public TextView mytextview3; 
      public ImageView myimageview1; 
    } 

    private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
     ImageView bmImage; 

     public DownloadImageTask(ImageView bmImage) { 
      this.bmImage = bmImage; 
     } 
     protected Bitmap doInBackground(String... urls) { 
      String urldisplay = urls[0]; 
      Bitmap mIcon = null; 
      try { 
       InputStream in = new java.net.URL(urldisplay).openStream(); 
       mIcon = BitmapFactory.decodeStream(in); 
      } catch (Exception e) { 
       Log.e("Error", e.getMessage()); 
       e.printStackTrace(); 
      } 
      return mIcon; 
     } 

     protected void onPostExecute(Bitmap result) { 
      bmImage.setImageBitmap(result); 
     } 
    } 
} 

我该如何解决这个问题?

回答

0

把三条线

myadapter = new CustomAdapter(this, mydatalist); 
     mycustomlist = (ListView)findViewById(R.id.listview); 
     mycustomlist.setAdapter(myadapter); 

在这个方法:

@Override 
public void onResponse(String string) { 
    parseJsonData(string); 
    // put them here 
} 

这工作,因为它填充后的数据进行解析插件,然后将其添加到适配器列表。如果将列表添加到OnCreate中的适配器,则onResponse方法将稍后运行(当数据返回时),并且列表将为空。

+0

我尝试过,但它给出了错误。 –

+0

我尝试过,但它给出了错误。 CustomAdapter中的customAdapter(Android.contex.contex ArrayList )无法应用于(Anonymous com.volley.Respond.Listener ,ArrayList ) –

+0

将'this'更改为'MainActivity.this' –

0

您需要为导航中声明的每个项目创建片段,并进行解析并将其中的所有内容和该片段从onNavigationItemSelected调用,并且如果您想要始终显示首先比您必须从中调用它onCreate()方法。

+0

你能告诉我如何。因为我没有让你清楚。 –

+0

是的,我可以清楚地解释你,你正在做Mainactivity中的一切,并且你正在使用Navigation Activity。如果你使用导航活动,你必须为每个菜单项创建片段,并且你也可以为这些菜单项创建Activity,点击onNavigationItemSelected。 – farhana

相关问题