2017-04-22 8 views
2

목록보기를 onItem 클릭하고 세부 정보를 표시하려면 DetailsPage로 가져 오려면 null이 표시됩니다. ListView의 항목은 이미지 URL, 이름 및 주소입니다. DetailsPage의 항목은 이미지 URL, 이름, 주소, 연락처 및 카테고리입니다.onItemClickListener를 사용하여 데이터를 가져올 수 없습니다.

Intent intent = new Intent(getApplicationContext(), DetailsOfWorkshops.class); 
     startActivity(intent); 

시도 :

Image of the view on my phone when get null

이 당신은 세부 사항 클래스에 아무것도 보내지

public class DetailsOfWorkshops extends AppCompatActivity { 

DatabaseReference mDatabaseRef; 
List<ImageUpload> listImage; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_details_of_workshops); 
    mDatabaseRef = FirebaseDatabase.getInstance().getReference(WorkshopsInfoActivity.FB_DATABASE_PATH); 
    mDatabaseRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      ImageUpload img = dataSnapshot.getValue(ImageUpload.class); 

      String name = img.getName(); 
      String address = img.getAddress(); 
      String contact = img.getContact(); 
      String category = img.getCategory(); 


      final TextView textViewDetails = (TextView) findViewById(R.id.tvName); 
      String string = "Name: " + name + "\nAddress: " + address + "\nContact: " + contact + "\nCategory: " + category + "\n\n"; 
      textViewDetails.setText(string); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
}} 

답변

0

내 DetailsPage 내 ListViewPage

public class ImageListActivity extends AppCompatActivity { 

private DatabaseReference mDatabaseRef; 
private List<ImageUpload> imgList; 
private ListView lv; 
private ImageListAdapter adapter; 
private ProgressDialog progressDialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_image_list); 
    imgList = new ArrayList<>(); 
    lv = (ListView) findViewById(R.id.listViewImage); 
    progressDialog = new ProgressDialog(this); 
    progressDialog.setMessage("Please wait loading list image..."); 
    progressDialog.show(); 

    mDatabaseRef = FirebaseDatabase.getInstance().getReference(WorkshopsInfoActivity.FB_DATABASE_PATH); 

    mDatabaseRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      progressDialog.dismiss(); 
      for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
       ImageUpload img = snapshot.getValue(ImageUpload.class); 
       imgList.add(img); 
      } 
      adapter = new ImageListAdapter(ImageListActivity.this, R.layout.image_item, imgList); 
      lv.setAdapter(adapter); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

      progressDialog.dismiss(); 
     } 
    }); 
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      Intent intent = new Intent(getApplicationContext(), DetailsOfWorkshops.class); 
      startActivity(intent); 
     } 
    }); 
}} 

입니다 이 사용 :

YourClass item = (YourClass) adapterView.getAdapter().getItem(position); 
Intent intent = new Intent(getApplicationContext().this, DetailsOfWorkshops.class); 
Bundle bundle = new Bundle(); 
bundle.putString("valueName", value); 
intent.putExtra("MyPackage", bundle); 
startActivity(intent); 
+0

죄송합니다. 아직 이해할 수 없습니다. 내 DetailsPage의 코드에 문제가 있습니까? –

+0

문제는 선생님이 ImageListActivity에서 DetailsPage 활동으로 아무 것도 보내지 않아서 어떤 항목이 표시 될지 알려주지 않는 것입니다. 위의 Rajesh 녀석을 좋아하고 다른 것을 보아주세요. – julanove

0

우리는 다음의 의도를 ActivityTwo ActivityTwo에서 데이터를 액세스하고 원하는 텍스트 뷰에 설정 ActivityOne에서 일부 데이터를 전송해야합니다.

아래 ActivityOne 코드를 확인하십시오. ActivityTwo에서

public class ImageListActivity extends AppCompatActivity { 

private DatabaseReference mDatabaseRef; 
public List<ImageUpload> imgList; 
private ListView lv; 
private ImageListAdapter adapter; 
private ProgressDialog progressDialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_image_list); 
    imgList = new ArrayList<>(); 
    lv = (ListView) findViewById(R.id.listViewImage); 
    progressDialog = new ProgressDialog(this); 
    progressDialog.setMessage("Please wait loading list image..."); 
    progressDialog.show(); 

    mDatabaseRef = FirebaseDatabase.getInstance().getReference(WorkshopsInfoActivity.FB_DATABASE_PATH); 

    mDatabaseRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      progressDialog.dismiss(); 
      for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
       ImageUpload img = snapshot.getValue(ImageUpload.class); 
       imgList.add(img); 
      } 
      adapter = new ImageListAdapter(ImageListActivity.this, R.layout.image_item, imgList); 
      lv.setAdapter(adapter); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

      progressDialog.dismiss(); 
     } 
    }); 
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

      ImageUpload itemData = imgList.get(i); 
      Intent intent = new Intent(getApplicationContext(), DetailsOfWorkshops.class); 
      intent.putExtra("name", itemData.getName()); 
      intent.putExtra("address", itemData.getAddress()); 
      intent.putExtra("contact", itemData.getContact());  
      intent.putExtra("category", itemData.getCatogory());  
      startActivity(intent); 
     } 
    }); 
}} 

체크 아웃은 일부 변경

public class DetailsOfWorkshops extends AppCompatActivity { 

DatabaseReference mDatabaseRef; 
List<ImageUpload> listImage; 

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

    String name = getIntent().getStringExtra("name"); 
    String address = getIntent().getStringExtra("address"); 
    String contact = getIntent().getStringExtra("contact"); 
    String category = getIntent().getStringExtra("category"); 


    TextView textViewDetails = (TextView) findViewById(R.id.tvName); 
    String string = "Name: " + name + "\nAddress: " + address + "\nContact: " + contact + "\nCategory: " + category + "\n\n"; 
    textViewDetails.setText(string); 

    mDatabaseRef = FirebaseDatabase.getInstance().getReference(WorkshopsInfoActivity.FB_DATABASE_PATH); 
    mDatabaseRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      ImageUpload img = dataSnapshot.getValue(ImageUpload.class); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
}} 

희망이 도움이.

@Rajesh

+0

정말 고마워요. 이것은 일이다. –

0

대신 onItemClick 리스너의 onItemSelected 청취자를 시도 이것은 당신이 그럼 당신은 적절한 값으로 엑스트라를 보낼 수있는 데이터가있는 할 특정 개체를 얻을 수 있습니다 위치를 줄 것이다

 ImageUpload itemData = imgList.get(pos); 
     Intent intent = new Intent(getApplicationContext(), 
     DetailsOfWorkshops.class); 
     intent.putExtra("name", itemData.getName()); 
     intent.putExtra("address", itemData.getAddress()); 
     intent.putExtra("contact", itemData.getContact());  
     intent.putExtra("category", itemData.getCatogory());  
     startActivity(intent); 

OnClick Listener는 특정 요소 byt가 아닌 전체보기에서 작동합니다. OnSelected는 listView에서 선택한 항목의 위치를 ​​나타냅니다.