【发布时间】:2015-09-26 10:40:53
【问题描述】:
我正在尝试获取服务器响应并将其存储在不同的字符串数组中,但是当我调用适配器类到现在它很好但在适配器类中会给我错误。
class viewticket extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pdialog = new ProgressDialog(UserLogedIn.this);
pdialog.setMessage("Loading....");
pdialog.setIndeterminate(false);
pdialog.setCancelable(false);
pdialog.show();
}
@Override
protected String doInBackground(String... params) {
List<NameValuePair> param = new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("userid", u_id));
ServiceHandler sh = new ServiceHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(URLMyTicket, ServiceHandler.POST, param);
Log.d("Response: ", "> " + jsonStr);
if (jsonStr != null)
{
try {
contacts = new JSONArray(jsonStr);
int a=contacts.length();
Log.v(TAG,""+a);
String[] id = new String[contacts.length()];
String[] prob = new String[contacts.length()];
String[] desc = new String[contacts.length()];
for (int i = 0; i < contacts.length(); i++) {
JSONObject c = contacts.getJSONObject(i);
String aa = c.getString(TAG_ID);
String bb = c.getString(TAG_PROB);
String cc = c.getString(TAG_DESC);
Log.v(TAG, "TAG_ID" + aa);
Log.v(TAG,"TAGPROB"+bb);
Log.v(TAG,"TAGDESC"+cc);
id[i] = aa;
prob[i]=bb;
desc[i]=cc;
Log.v(TAG, "aaaaa" + id[i]);
Log.v(TAG,"bbbbb"+prob[i]);
Log.v(TAG,"ccc"+desc[i]);
Ticket_adapter adapter=new Ticket_adapter(this,id,prob,desc);
lv.setAdapter(adapter);
}
} catch (JSONException e) {
System.out.print("hiiiiiiiiiiii" );
e.printStackTrace();
}
}
if(jsonStr==null)
{
// Toast.makeText(UserLogedIn.this, "hiiiiiiiiiiiiiiiiiiiii", Toast.LENGTH_SHORT).show();
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
// Dismiss the progress dialog
pdialog.hide();
pdialog.dismiss();
}
}
现在适配器类中的问题是它在 super() 方法处给我错误 Ticket_adapter.java
public class Ticket_adapter extends ArrayAdapter<String> {
UserLogedIn.viewticket context;
String[] id;
String[] prob;
String[] desc;
public Ticket_adapter(UserLogedIn.viewticket context, String[] id,String[] prob,String[] desc) {
super(context, R.id.list_item,id);//error cannot resolve method super
this.context=context;
this.id=id;
this.prob=prob;
this.desc=desc;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater=context.getLayoutInflater();
View rowView=inflater.inflate(R.layout.my_list, null, true);
TextView idtxt=(TextView)convertView.findViewById(R.id.uid);
TextView probtxt=(TextView)convertView.findViewById(R.id.prob);
TextView desctxt=(TextView)convertView.findViewById(R.id.ticket);
idtxt.setText(id[position]);
probtxt.setText(prob[position]);
desctxt.setText(desc[position]);
return convertView;
}
}
错误:
错误:(21, 9) 错误: 没有找到合适的构造函数 ArrayAdapter(UserLogedIn.viewticket,int,String[]) 构造函数 ArrayAdapter.ArrayAdapter(Context,int,int) 不适用(参数 不匹配; UserLogedIn.viewticket 无法转换为 Context) 构造函数 ArrayAdapter.ArrayAdapter(Context,int,String[]) 不是 适用(参数不匹配;UserLogedIn.viewticket 不能 转换为 Context) 构造函数 ArrayAdapter.ArrayAdapter(Context,int,List) 不适用 (参数不匹配;无法将 UserLogedIn.viewticket 转换为 上下文)
【问题讨论】:
-
Error:(21, 9) 错误:没有找到适合 ArrayAdapter(UserLogedIn.viewticket,int,String[]) 的构造函数 ArrayAdapter.ArrayAdapter(Context,int,int) 不适用(参数不匹配;UserLogedIn.viewticket 无法转换为 Context)构造函数 ArrayAdapter.ArrayAdapter(Context,int,String[]) 不适用(参数不匹配;UserLogedIn.viewticket 无法转换为 Context)构造函数 ArrayAdapter.ArrayAdapter(Context,int,List
) 不适用(参数不匹配;UserLogedIn.viewticket 无法转换为 Context) -
ArrayAdapter的构造函数需要Context作为第一个参数。因此,您可以覆盖 AsyncTask 构造函数,将上下文传递给那里的 viewticket,然后使用该上下文来初始化 Ticket_adapter。如果您使用来自 Activity 的 viewticket,则可以将您的 Activity 作为上下文传递(Activity 扩展 Context 类)。
-
扩展
BaseAdapter而不是ArrayAdapter -
ArrayAdapter 没有默认构造函数接受您提供的参数,正如@Blackbelt 所说,使用 BaseAdapter
-
我知道。 @AmanGrover。
标签: android