2016-04-29 29 views
0

我在應用程序中有activity_main.xml。其中包含兩個listview。其中一個負責將json數據視圖作爲帶有自定義列表適配器的列表,另一個用於顯示側面菜單的內容。 通過一個listview我得到json數據,但沒有獲得第二個listview的側面菜單內容,如果我已經在activity_main.xml中聲明。 我不明白它背後的原因是什麼?請幫忙 。活動_main.xml中的兩個ListView。我沒有在同一時間得到同樣的結果

after clicking profile 3rd image

Main Screen

Sidemenuscreen activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" 
    android:id="@+id/app_name" 
    > 


    <android.support.v4.widget.DrawerLayout 
     android:id="@+id/drawerLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
    <FrameLayout 
     android:id="@+id/frame_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"/> 
     <ListView 
      android:id="@+id/list" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:divider="@color/list_divider" 
      android:dividerHeight="1dp" 
      android:listSelector="@drawable/list_row_selector" 
      android:background="@color/list_background"/> 
    <ListView 
     android:id="@+id/list_slidermenu" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@color/list_divider" 
     android:dividerHeight="1dp" 
     android:listSelector="@drawable/list_selector" 
     android:background="@color/list_background"/> 
    </android.support.v4.widget.DrawerLayout> 
</RelativeLayout> 

MainActivity.java

import android.app.ActionBar; 
import android.app.Activity; 
import android.app.Fragment; 
import android.app.FragmentManager; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.content.res.Configuration; 
import android.content.res.TypedArray; 
import android.os.Bundle; 
import android.support.v4.app.ActionBarDrawerToggle; 
import android.support.v4.widget.DrawerLayout; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 

import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.VolleyLog; 
import com.android.volley.toolbox.JsonArrayRequest; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.ArrayList; 
import java.util.List; 

import info.androidhive.customlistviewvolley.adater.CustomListAdapter; 
import info.androidhive.customlistviewvolley.adater.NavDrawerListAdapter; 
import info.androidhive.customlistviewvolley.app.AppController; 
import info.androidhive.customlistviewvolley.model.About; 
import info.androidhive.customlistviewvolley.model.CurrencyConverter; 
import info.androidhive.customlistviewvolley.model.EMICalculator; 
import info.androidhive.customlistviewvolley.model.Feedback; 
import info.androidhive.customlistviewvolley.model.Movie; 
import info.androidhive.customlistviewvolley.model.NavDrawerItem; 
import info.androidhive.customlistviewvolley.model.PayInstallment; 
import info.androidhive.customlistviewvolley.model.Profile; 
import info.androidhive.customlistviewvolley.model.Settings; 
import info.androidhive.customlistviewvolley.model.SocialFeed; 

public class MainActivity extends Activity { 

    private DrawerLayout mDrawerLayout; 
    private ListView mDrawerList; 
    private ActionBarDrawerToggle mDrawerToggle; 

    // drawer title 
    private CharSequence mDrawerTitle; 

    // used to store app title 
    private CharSequence mTitle; 

    // slide menu items 
    private String[] navMenuTitles; 
    private TypedArray navMenuIcons; 

    private ArrayList<NavDrawerItem> navDrawerItems; 
    private NavDrawerListAdapter adater1; 


    // Log tag 
    private static final String TAG = MainActivity.class.getSimpleName(); 
    // data of json url 
    private static final String url = "http://milagro.in/wip/apps/n/THDC2.json"; 
    private ProgressDialog pDialog; 
    private List<Movie> movieList = new ArrayList<Movie>(); 
    private ListView listView; 
    private CustomListAdapter adapter; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ActionBar actionBar = getActionBar(); 


     listView = (ListView) findViewById(R.id.list); 
     adapter = new CustomListAdapter(this, movieList); 
     listView.setAdapter(adapter); 
     pDialog = new ProgressDialog(this); 
     // Showing progress dialog before making http request 
     pDialog.setMessage("Loading..."); 
     pDialog.show(); 

     // Creating volley request obj 
     JsonArrayRequest movieReq = new JsonArrayRequest(url, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         Log.d(TAG, response.toString()); 
         hidePDialog(); 
         // Parsing json 
         for (int i = 0; i < response.length(); i++) { 
          try { 
           JSONObject obj = response.getJSONObject(i); 
           Movie movie = new Movie(); 
           movie.setTitle(obj.getString("tata_project_name")); 
           movie.setThumbnailUrl(obj.getString("project_logo_url")); 
           movie.setParkingUrl(obj.getString("parking")); 
           movie.setPowerbackupUrl(obj.getString("powerbackup")); 
           movie.setFitnessUrl(obj.getString("fitness")); 
           movie.setLiftUrl(obj.getString("lift")); 
           movie.setParkUrl(obj.getString("park")); 
           movie.setSecurityUrl(obj.getString("security")); 
           movie.setSwimmingUrl(obj.getString("swimming")); 
           movie.setTypology(obj.getString("project_Typology")); 
           movie.setPrice(obj.getString("price")); 
           // adding movie to movies array 
           movieList.add(movie); 
          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 
         } 

         adapter.notifyDataSetChanged(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       hidePDialog(); 
      } 
     }); 
     // Adding request to request queue 
     AppController.getInstance().addToRequestQueue(movieReq); 
     //addListenerOnButton(); 
     mTitle = mDrawerTitle = getTitle(); 

     // load slide menu items 
     navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items); 

     // nav drawer icons from resources 
     navMenuIcons = getResources() 
       .obtainTypedArray(R.array.nav_drawer_icons); 

     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); 
     mDrawerList = (ListView) findViewById(R.id.list_slidermenu); 

     navDrawerItems = new ArrayList<NavDrawerItem>(); 

     // adding nav drawer items to array 
     // Profile 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1))); 
     // About 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1))); 
     // Emi Calculator 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1))); 
     // Currency Converter 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1))); 
     // PayInstallments/EMI 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1))); 
     // Social Feed 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1))); 
     // Feedback 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[6], navMenuIcons.getResourceId(6, -1))); 
     //Settings 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[7], navMenuIcons.getResourceId(7, -1))); 

     // Recycle the typed array 
     navMenuIcons.recycle(); 

     mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); 

     // setting the nav drawer list adapter 
     adater1 = new NavDrawerListAdapter(getApplicationContext(), navDrawerItems); 
     mDrawerList.setAdapter(adater1); 

     // enabling action bar app icon and behaving it as toggle button 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 

     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
       R.drawable.menu, //nav menu toggle icon 
       R.string.app_name, // nav drawer open - description for accessibility 
       R.string.app_name // nav drawer close - description for accessibility 
     ) { 
      public void onDrawerClosed(View view) { 
       getActionBar().setTitle(mTitle); 
       // calling onPrepareOptionsMenu() to show action bar icons 
       invalidateOptionsMenu(); 
      } 

      public void onDrawerOpened(View drawerView) { 
       getActionBar().setTitle(mDrawerTitle); 
       // calling onPrepareOptionsMenu() to hide action bar icons 
       invalidateOptionsMenu(); 
      } 
     }; 

     mDrawerLayout.setDrawerListener(mDrawerToggle); 

     if (savedInstanceState == null) { 
      // on first time display view for first nav item 
//   displayView(0); 
     } 
    } 

    private class SlideMenuClickListener implements 
      ListView.OnItemClickListener { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
           long id) { 
      // display view for selected nav drawer item 
      displayView(position); 
     } 
    } 

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

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // toggle nav drawer on selecting action bar app icon/title 
     if (mDrawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     // Handle action bar actions click 
     switch (item.getItemId()) { 
      case R.id.action_settings: 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

    /* * 
    * Called when invalidateOptionsMenu() is triggered 
    */ 
    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
     // if nav drawer is opened, hide the action items 
     boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); 
     menu.findItem(R.id.action_settings).setVisible(!drawerOpen); 
     return super.onPrepareOptionsMenu(menu); 
    } 




    private void displayView(int position) { 
     // update the main content by replacing fragments 
     Fragment fragment = null; 
     switch (position) { 
      case 0: 
       fragment = new Profile(); 
       break; 
      case 1: 
       fragment = new About(); 
       break; 
      case 2: 
       fragment = new EMICalculator(); 
       break; 
      case 3: 
       fragment = new CurrencyConverter(); 
       break; 
      case 4: 
       fragment = new PayInstallment(); 
       break; 
      case 5: 
       fragment = new SocialFeed(); 
       break; 
      case 6 : 
       fragment =new Feedback(); 
       break; 
      case 7: 
       fragment =new Settings(); 
      break; 
      default: 
       break; 
     } 

     if (fragment != null) { 
      FragmentManager fragmentManager = getFragmentManager(); 
      fragmentManager.beginTransaction() 
        .replace(R.id.frame_container, fragment).commit(); 

      // update selected item and title, then close the drawer 
      mDrawerList.setItemChecked(position, true); 
      mDrawerList.setSelection(position); 
     setTitle(navMenuTitles[position]); 
      mDrawerLayout.closeDrawer(mDrawerList); 
     } else { 
      // error in creating fragment 
      Log.e("MainActivity", "Error in creating fragment"); 
     } 
    } 
    @Override 
    public void setTitle(CharSequence title) { 
     mTitle = title; 
     getActionBar().setTitle(mTitle); 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     // Sync the toggle state after onRestoreInstanceState has occurred. 
     mDrawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     // Pass any configuration change to the drawer toggls 
     mDrawerToggle.onConfigurationChanged(newConfig); 
    } 



    public void bottomMenuClick(View v) 
    { 
     int pos = Integer.parseInt(v.getTag().toString()); 

     switch (pos) 
     { 
      case 1: // enquiry screen 
       startActivity(new Intent(MainActivity.this,Enquiry.class)); 
       break; 
      case 2: // contact screen 
       startActivity(new Intent(MainActivity.this, Contact.class)); 
       break; 
      case 3: // Instant Call Back screen 
       startActivity(new Intent(MainActivity.this, CallBack.class)); 
       break; 
     } 
    } 
    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     hidePDialog(); 
    } 

    private void hidePDialog() { 
     if (pDialog != null) { 
      pDialog.dismiss(); 
      pDialog = null; 
     } 
    } 

profile.java(側菜單內容)

import android.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import info.androidhive.customlistviewvolley.R; 

public class Profile extends Fragment { 

    public Profile(){} 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.profile, container, false); 

     return rootView; 
    } 
} 

是profile.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

    <TextView 
     android:id="@+id/txtLabel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:textSize="16dp" 
     android:text="Profile"/> 

    <ImageView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/txtLabel" 
     android:src="@drawable/profile" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="10dp"/> 

</RelativeLayout> 
+0

你關閉你的FrameLayout標籤,它是一個容器,且必須包含JSON數據列表視圖。 –

+0

Thanks.I在json數據列表視圖後關閉。但是在點擊側邊菜單列表後,特定的屏幕並未取代json數據列表視圖。 – Neeraj

+0

見附圖。如果我在json的listview之後關閉Framelayout,然後點擊配置文件的側面菜單內容應該替換json數據的列表視圖,但它不會發生。它正在通過json的List視圖。爲什麼?請告訴我 – Neeraj

回答

0

更新在是profile.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#FFFFFF"> 

    <TextView 
     android:id="@+id/txtLabel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:textSize="16dp" 
     android:text="Profile"/> 

    <ImageView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/txtLabel" 
     android:src="@drawable/profile" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="10dp"/> 

</RelativeLayout> 

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" 
    android:id="@+id/app_name" > 


    <android.support.v4.widget.DrawerLayout 
     android:id="@+id/drawerLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
     <FrameLayout 
      android:id="@+id/frame_container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 
     <ListView 
      android:id="@+id/list" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:divider="@color/list_divider" 
      android:dividerHeight="1dp" 
      android:listSelector="@drawable/list_row_selector" 
      android:background="@color/list_background"/> 
     </FrameLayout> 
     <ListView 
      android:id="@+id/list_slidermenu" 
      android:layout_width="240dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      android:choiceMode="singleChoice" 
      android:divider="@color/list_divider" 
      android:dividerHeight="1dp" 
      android:listSelector="@drawable/list_selector" 
      android:background="@color/list_background"/> 
    </android.support.v4.widget.DrawerLayout> 
</RelativeLayout> 

變化在配置文件點擊,黑色通過添加android:background =「#FFFFFF」解決了圓形透明度問題。

after clicking opening the content

相關問題