2017-08-09 180 views
0

我正在開發使用Firebase數據庫作爲後端的Android應用程序。列表查看從我的Json鍵中檢索的項目。例如: -如何在單擊ListView項目時加載Firebase數據庫Vaule詳細信息

{ 
    "Player3" : { 
     "LY" : "ewfw", 
     "Ty" : "rwerw" 
     } 
} 

然後,「LY」和「TY」將被加載到列表查看項目(它工作正常)。在「LY」或「TY」(列表視圖項目)點擊「ewfw」或「rwerw」後,將顯示詳細的活動性。問題是隻有密鑰顯示在細節活動不值。我如何加載細節活動的價值? 這裏是我的代碼...

ListItemActivity.Java

public class ListItemActivity5 extends Fragment { 
    private static final String TAG = "Tab4Fragment"; 
    //String[] values = new String[]{"", "", "", "", "", "", "", "", ""}; 
    ListView listView; 
    TextView textView; 
    Array array; 
    RelativeLayout relativeLayout; 
    ViewGroup.LayoutParams layoutparams; 
    private DatabaseReference mDatabase; 
    RelativeLayout container; 
    AnimationDrawable anim; 
    Context context; 

    //private TextView text; 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.activity_conferance, container, false); 
     //text = (TextView) view.findViewById(R.id.textView1); 
     listView = (ListView) view.findViewById(R.id.list); 
     container = (RelativeLayout) view.findViewById(R.id.container5); 
     final TextView textView1 = (TextView) view.findViewById(R.id.textView1); 
     anim = (AnimationDrawable) container.getBackground(); 
     anim.setEnterFadeDuration(2000); 
     anim.setExitFadeDuration(3000); 
     final ListView listView = (ListView) view.findViewById(R.id.list); 
     final ArrayList<String> friends = new ArrayList<String>(); 

     mDatabase = FirebaseDatabase.getInstance().getReference("Player"); 
     mDatabase.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(final DataSnapshot dataSnapshot) { 
       friends.clear(); 
       for (final DataSnapshot player : dataSnapshot.getChildren()) { 
        Log.i("Player", player.getKey()); 
        friends.add(player.getKey()); 
        player.getValue(); 


        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
         public void onItemClick(AdapterView<?> parent, View view, 
               int position, long id) { 
          player.getValue(); 
          //player2 = (String) String.valueOf(player.getValue()); 
          //String topic = String.valueOf(player.getValue()); 
          //topic = (String) parent.getItemAtPosition(position); 
          Intent intent = new Intent(getContext(), Details.class); 

          intent.putExtra("key", String.valueOf(player.getValue())); 

          startActivity(intent); 


         } 

        }); 
       } 
       ArrayAdapter arrayAdapter = new ArrayAdapter(getContext(), android.R.layout.simple_list_item_1, 
         friends) { 

        @Override 
        public View getView(int position, View convertView, ViewGroup parent) { 

         View view = super.getView(position, convertView, parent); 

         layoutparams = view.getLayoutParams(); 
         TextView textView = (TextView) view.findViewById(android.R.id.text1); 

      /*YOUR CHOICE OF COLOR*/ 
         textView.setTextColor(Color.WHITE); 
         textView.setTextSize(22); 

         //Define your height here. 
         //layoutparams.height = 240; 

         view.setLayoutParams(layoutparams); 

         return view; 


        } 
       }; 
       listView.setAdapter(arrayAdapter); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 


     }); 

     return view; 
    } 

} 

Details.Java

public class Details extends Activity { 
    RelativeLayout container; 
    AnimationDrawable anim; 
    ScrollView mScrollView; 
    TextView textView1; 
    private DatabaseReference mDatabase; 
    private ListItemActivity1 mylist1; 
    private DataSnapshot dataSnapshot; 
    FloatingActionButton floatingActionButton; 
    private ListItemActivity5 listItemActivity5; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.ab1); 

     textView1 = (TextView) findViewById(R.id.textView1); 
     //mref = new Firebase("https://tafach-love-2.firebaseio.com/"); 
     Intent intent = getIntent(); 

     if(intent.hasExtra("key")){ 
      textView1.setText(intent.getStringExtra("key")); 
     } 
     textView1.setMovementMethod(new ScrollingMovementMethod()); 

} 
} 

感謝您的幫助。

+0

什麼是你所面臨的問題? – Ezio

+0

當我把Friends.get(位置)的意圖getKey()將被顯示。我想要的是顯示的鍵的值 –

+0

您是否從Firebase DB獲得正確的值? – Ezio

回答

0

我已經得到了我的問題的答案。我把這些線到我的名單上的代碼ItemActivity和ChildEventListner代替AddEventLister設置onclickListner ...

mDatabase.addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
       final String playerName = dataSnapshot.getValue(String.class); 
       hy.add(playerName); 
       listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        public void onItemClick(AdapterView<?> parent, View view, 
              int position, long id) { 
         //player.getValue(); 
         //player2 = (String) String.valueOf(player.getValue()); 
         //String topic = String.valueOf(player.getValue()); 
         //topic = (String) parent.getItemAtPosition(position); 
         Intent intent = new Intent(getContext(), Details.class); 

         intent.putExtra("key", String.valueOf(hy.get(position))); 

         startActivity(intent); 


        } 

       }); 
      } 
相關問題