Android : How to reference a widget from fragment layout which is not yet present in UI

on Wednesday, September 17, 2014


I'm using SlidingPane layout for master/detail kind of UI. Detail pane is a fragment which contains among other widgets ListView a would like to reference and set OnItemClickListener on it. Problem is that ListView (R.id.lvDetailsListView) is not yet present in UI until user selects particular option in Master Pane. How to reference widget from fragment?


Here is how I tried, but I get NullPointerException:



masterList.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
masterItemsByStore = new GetMasterItemsByStore();

// Remove info label on store select
if(selectStoreLabel.getVisibility() != 8){
selectStoreLabel.setVisibility(8);
}

TextView tvStoreID = (TextView) view
.findViewById(R.id.tvStoreID);
String store_id = tvStoreID.getText().toString();
TextView tvStoreName = (TextView) view
.findViewById(R.id.tvStoreName);
String store_name = tvStoreName.getText().toString();
TextView tvStoreAddress = (TextView) view
.findViewById(R.id.tvStoreCity);
String store_address = tvStoreAddress.getText().toString();
setTitle(store_name);

fragment = new StoreItemsFragment(store_id, store_name,
store_address);

detailsList = (ListView) fragment.getView().findViewById(R.id.lvDetailsListView);

FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.detail_pane, fragment).commit();

slidingPane.closePane();

detailsList.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
detailPane.getForeground().setAlpha(200);
popWindow.showAtLocation(view, Gravity.TOP, 0, 150);
}
});
}
});

0 comments:

Post a Comment