Java 当使用json从php传递数据时,如何为自定义列表视图创建一个MClickListener
我正在创建一个应用程序,其中将显示一个酒店列表,所有数据都来自MySQL,使用JSON和PHP,通过将基本适配器扩展为自定义适配器,我创建了自定义Java 当使用json从php传递数据时,如何为自定义列表视图创建一个MClickListener,java,onitemclicklistener,custom-lists,Java,Onitemclicklistener,Custom Lists,我正在创建一个应用程序,其中将显示一个酒店列表,所有数据都来自MySQL,使用JSON和PHP,通过将基本适配器扩展为自定义适配器,我创建了自定义列表视图,但是,我无法为列表视图实现OnItemClickListener,因为每当用户单击列表视图的一行时,我都希望在Toast中显示该行的酒店名称。我尝试了互联网上的各种例子,但我就是不工作 适配器 public class CustomListAdapterHotel extends BaseAdapter { private Activ
列表视图,但是,我无法为列表视图
实现OnItemClickListener
,因为每当用户单击列表视图的一行时,我都希望在Toast
中显示该行的酒店名称。我尝试了互联网上的各种例子,但我就是不工作
适配器
public class CustomListAdapterHotel extends BaseAdapter {
private Activity activity;
private LayoutInflater inflater;
private List<WorldsBillionaires> billionairesItems;
ImageLoader imageLoader = AppController.getInstance().getImageLoader();
public CustomListAdapterHotel(Activity activity, List<WorldsBillionaires> billionairesItems) {
this.activity = activity;
this.billionairesItems = billionairesItems;
}
@Override
public int getCount() {
return billionairesItems.size();
}
@Override
public Object getItem(int location) {
return billionairesItems.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(R.layout.list_hotel, null);
if (imageLoader == null)
imageLoader = AppController.getInstance().getImageLoader();
//NetworkImageView thumbNail = (NetworkImageView) convertView.findViewById(R.id.thumbnail);
TextView hotel_name = (TextView) convertView.findViewById(R.id.hotel_name);
TextView zone = (TextView) convertView.findViewById(R.id.zone);
TextView contact_person = (TextView) convertView.findViewById(R.id.contact_person);
TextView contact_number = (TextView) convertView.findViewById(R.id.contact_number);
TextView btc_direct = (TextView) convertView.findViewById(R.id.btcdirect);
// getting billionaires data for the row
WorldsBillionaires m = billionairesItems.get(position);
// name
hotel_name.setText(String.valueOf(m.getHotel_Name()));
zone.setText(String.valueOf(m.getHotel_Zone()));
contact_person.setText(String.valueOf(m.getContact_Person()));
contact_number.setText(String.valueOf(m.getContact_Number()));
btc_direct.setText(String.valueOf(m.getBtc_Direct()));
return convertView;
}
}
主要活动
public class ShowHotel extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
// Billionaires json url
private ProgressDialog pDialog;
private List<WorldsBillionaires> worldsBillionairesList = new ArrayList<WorldsBillionaires>();
private ListView listView;
private CustomListAdapterHotel adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_hotel);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
listView = (ListView) findViewById(R.id.list);
adapter = new CustomListAdapterHotel(this, worldsBillionairesList);
listView.setAdapter(adapter);
pDialog = new ProgressDialog(this);
// Showing progress dialog before making http request
pDialog.setMessage("Loading...");
pDialog.show();
// Creating volley request obj
JsonArrayRequest billionaireReq = new JsonArrayRequest("http://192.168.247.1/AdminBihar/getHotel.php?zone="+methods.zone,
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);
WorldsBillionaires worldsBillionaires = new WorldsBillionaires();
worldsBillionaires.setHotel_Name(obj.getString("hotel_name"));
worldsBillionaires.setThumbnailUrl(obj.getString("image"));
worldsBillionaires.setHotel_Zone(obj.getString("zone"));
worldsBillionaires.setContact_Person(obj.getString("contact_person"));
worldsBillionaires.setContact_Number(obj.getString("contact_number"));
worldsBillionaires.setBtc_Direct(obj.getString("btc_direct"));
// adding Billionaire to worldsBillionaires array
worldsBillionairesList.add(worldsBillionaires);
} catch (JSONException e) {
e.printStackTrace();
}
}
// notifying list adapter about data changes
// so that it renders the list view with updated data
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(billionaireReq);
}
@Override
public void onDestroy() {
super.onDestroy();
hidePDialog();
}
private void hidePDialog() {
if (pDialog != null) {
pDialog.dismiss();
pDialog = null;
}
}
}
公共级ShowHotel活动{
私有静态最终字符串标记=MainActivity.class.getSimpleName();
//亿万富翁json网址
私人对话;
私有列表worldsBillionairesList=newarraylist();
私有列表视图列表视图;
私人客户列表适配器酒店适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u show\u hotel);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_启动器);
getSupportActionBar().setDisplayUseLogoEnabled(true);
listView=(listView)findViewById(R.id.list);
adapter=新的CustomListAdapterHotel(此为WorldsBillionAirList);
setAdapter(适配器);
pDialog=新建进度对话框(此对话框);
//在发出http请求之前显示进度对话框
设置消息(“加载…”);
pDialog.show();
//创建截击请求对象
JsonArrayRequest亿万AIREREQ=新的JsonArrayRequest(“http://192.168.247.1/AdminBihar/getHotel.php?zone=“+方法.区域,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
hidePDialog();
//解析json
对于(int i=0;i
因此,在获取json数据后,在显示列表的活动中执行以下操作:
public class DisplayListView extends AppCompatActivity {
ListView listView;
protected void onCreate(){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_list_view);
listView = (ListView) findViewById(R.id.listview);
hotelAdapter = new CustomListAdapterHotel (this, R.layout.row_layout);
listView.setAdapter(hotelAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
Model stuff = (Model) hotelAdapter.getItem(position);
String hotelName = stuff.getHotel_Name();
Toast.makeText(getApplicationContext(), hotelName, Toast.LENGTH_SHORT).show();
}
});
公共类DisplayListView扩展了AppCompative活动{
列表视图列表视图;
受保护的void onCreate(){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u display\u list\u view);
listView=(listView)findViewById(R.id.listView);
hotelAdapter=新的CustomListAdapterHotel(此,R.layout.row_布局);
setAdapter(hotelAdapter);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Model stuff=(Model)hotelAdapter.getItem(position);
String hotelName=stuff.getHotel_Name();
Toast.makeText(getApplicationContext(),hotelName,Toast.LENGTH_SHORT).show();
}
});
在这里,这对我很有用:)所以在获取json数据后,在显示列表的活动中,执行以下操作:
public class DisplayListView extends AppCompatActivity {
ListView listView;
protected void onCreate(){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_list_view);
listView = (ListView) findViewById(R.id.listview);
hotelAdapter = new CustomListAdapterHotel (this, R.layout.row_layout);
listView.setAdapter(hotelAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
Model stuff = (Model) hotelAdapter.getItem(position);
String hotelName = stuff.getHotel_Name();
Toast.makeText(getApplicationContext(), hotelName, Toast.LENGTH_SHORT).show();
}
});
公共类DisplayListView扩展了AppCompative活动{
列表视图列表视图;
受保护的void onCreate(){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u display\u list\u view);
listView=(listView)findViewById(R.id.listView);
hotelAdapter=新的CustomListAdapterHotel(此,R.layout.row_布局);
setAdapter(hotelAdapter);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Model stuff=(Model)hotelAdapter.getItem(position);
String hotelName=stuff.getHotel_Name();
Toast.makeText(getApplicationContext(),hotelName,Toast.LENGTH_SHORT).show();
}
});
那里,,