问题描述
使用im矩阵光标行添加到游标。
在上创建在MainActivity定义的列
//在保护无效的onCreate的String [] =列新的String [] {dealername \"product\",\"type\",\"description\",\"location\",\"sublocation\",\"address\",\"phone1\",\"phone2\",\"auth\",\"brands\",\"lat\",\"lon\"};
光标=新MatrixCursor(列);
// -----------------在asyctask doinbackground
cursor.addRow(新的String [] {json.getString(dealername),json.getString(产品), json.getString(\"type\"),json.getString(\"description\"),json.getString(\"location\"),json.getString(\"sublocation\"),json.getString(\"address\"),json.getString(\"phone1\"),json.getString(\"phone2\"),json.getString(\"auth\"),json.getString(\"brands\"),json.getString(\"lat\"),json.getString(\"lon\")});
当我试图让光标应用程序崩溃简单列数
保护无效onPostExecute(虚空避免){
super.onPostExecute(避免);
Toast.makeText(getApplicationContext(),cursor.getCount(),Toast.LENGTH_LONG).show();
}
更新:
私有类getdealerinfo扩展的AsyncTask<太虚,太虚,MatrixCursor> { @覆盖
在preExecute保护无效(){
super.on preExecute(); }
@覆盖
保护MatrixCursor doInBackground(无效参数... args){ / *建筑参数* / 清单<&的NameValuePair GT; PARAMS =新的ArrayList<&的NameValuePair GT;();
params.add(新BasicNameValuePair(PNAME,selectedproduct));
params.add(新BasicNameValuePair(位置,selectedlocation)); / *从URL *获取JSON字符串/
JSONObject的JSON = jParser.makeHtt prequest(dealers_url,GET,则params); 尝试{
/ *检查成功TAG * /
INT成功= json.getInt(TAG_SUCCESS);
如果(成功== 1){
JSONArray JAStuff = json.getJSONArray(TAG_STUFF); / **检查记录号** /
INT intStuff = JAStuff.length();
//创建数组
dealerdetailsarray =新的String [intStuff] [12];
如果(intStuff!= 0){
的String [] = STR1新的String [JAStuff.length()];
的for(int i = 0; I< JAStuff.length();我++)
{
JSON = JAStuff.getJSONObject(ⅰ);
// startManagingCursor(光标);
// dealerdetailsarray [0] [0] = json.getString(dealername);
cursor.addRow(新的String [] {json.getString(dealername),json.getString(产品), json.getString(\"type\"),json.getString(\"description\"),json.getString(\"location\"),json.getString(\"sublocation\"),json.getString(\"address\"),json.getString(\"phone1\"),json.getString(\"phone2\"),json.getString(\"auth\"),json.getString(\"brands\"),json.getString(\"lat\"),json.getString(\"lon\")}); }
}
}
}赶上(例外五){
Log.e(测试,e.toString());
}
返回游标;
}
@覆盖
保护无效onPostExecute(MatrixCursor光标){
// super.onPostExecute(避免);
尝试
{
Toast.makeText(getApplicationContext(),cursor.getCount(),Toast.LENGTH_LONG).show();
}
赶上(例外五){
Log.e(myerror,e.getMessage());
}
}
} }
您需要从返回
为光标
对象doInBackground() onPostExecute()
。定义你的的AsyncTask
类
类XYZTask扩展的AsyncTask<太虚,太虚,MatrixCursor> { 保护MatrixCursor doInBackground(虚空......无效){ .....
cursor.addRow(新的String [] {json.getString(dealername),json.getString(产品), json.getString(\"type\"),json.getString(\"description\"),json.getString(\"location\"),json.getString(\"sublocation\"),json.getString(\"address\"),json.getString(\"phone1\"),json.getString(\"phone2\"),json.getString(\"auth\"),json.getString(\"brands\"),json.getString(\"lat\"),json.getString(\"lon\")});
返回游标;
} 保护无效onPostExecute(MatrixCursor光标){
Toast.makeText(getApplicationContext(),cursor.getCount(),Toast.LENGTH_LONG).show();
}
}
和返回光标
从对象doInBackground()
作为参数传递给 onPostExecute( )
。
编辑:
定义你的的AsyncTask
是这样的:
私有类getdealerinfo扩展的AsyncTask<无效,无效的JSONObject> { @覆盖
在preExecute保护无效(){
super.on preExecute(); }
@覆盖
受保护的JSONObject doInBackground(无效参数... args){ / *建筑参数* / 清单<&的NameValuePair GT; PARAMS =新的ArrayList<&的NameValuePair GT;();
params.add(新BasicNameValuePair(PNAME,selectedproduct));
params.add(新BasicNameValuePair(位置,selectedlocation)); / *从URL *获取JSON字符串/
JSONObject的JSON = jParser.makeHtt prequest(dealers_url,GET,则params);
返回JSON;
}
@覆盖
保护无效onPostExecute(JSON的JSONObject){
// super.onPostExecute(避免);
MatrixCursor光标=新MatrixCursor(); 尝试{
/ *检查成功TAG * /
INT成功= json.getInt(TAG_SUCCESS);
如果(成功== 1){
JSONArray JAStuff = json.getJSONArray(TAG_STUFF); / **检查记录号** /
INT intStuff = JAStuff.length();
//创建数组
dealerdetailsarray =新的String [intStuff] [12];
如果(intStuff!= 0){
的String [] = STR1新的String [JAStuff.length()];
的for(int i = 0; I< JAStuff.length();我++)
{
JSON = JAStuff.getJSONObject(ⅰ);
// startManagingCursor(光标);
// dealerdetailsarray [0] [0] = json.getString(dealername);
cursor.addRow(新的String [] {json.getString(dealername),json.getString(产品), json.getString(\"type\"),json.getString(\"description\"),json.getString(\"location\"),json.getString(\"sublocation\"),json.getString(\"address\"),json.getString(\"phone1\"),json.getString(\"phone2\"),json.getString(\"auth\"),json.getString(\"brands\"),json.getString(\"lat\"),json.getString(\"lon\")}); }
}
}
}赶上(例外五){
Log.e(测试,e.toString());
}
Toast.makeText(getApplicationContext(),cursor.getCount(),Toast.LENGTH_LONG).show(); }
} }
先试试这个。
Im using a matrix cursor to add rows to cursor.
Defined columns in the MainActivity on Create
//In protected void onCreate
String[] columns = new String[] { "dealername", "product","type","description","location","sublocation","address","phone1","phone2","auth","brands","lat","lon"};
cursor= new MatrixCursor(columns);
//----------------- In asyctask doinbackground
cursor.addRow(new String[] {json.getString("dealername"),json.getString("product"), json.getString("type"),json.getString("description"),json.getString("location"),json.getString("sublocation"),json.getString("address"),json.getString("phone1"),json.getString("phone2"),json.getString("auth"),json.getString("brands"),json.getString("lat"),json.getString("lon")});
When i try to get number of columns in the cursor the app simply crashes
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
Toast.makeText(getApplicationContext(), cursor.getCount(),Toast.LENGTH_LONG).show();
}
UPDATE:
private class getdealerinfo extends AsyncTask<Void,Void,MatrixCursor> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected MatrixCursor doInBackground(Void... args) {
/* Building Parameters */
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("pname",selectedproduct));
params.add(new BasicNameValuePair("location",selectedlocation));
/* getting JSON string from URL */
JSONObject json = jParser.makeHttpRequest(dealers_url, "GET", params);
try {
/* Checking for SUCCESS TAG */
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
JSONArray JAStuff = json.getJSONArray(TAG_STUFF);
/** CHECK THE NUMBER OF RECORDS **/
int intStuff = JAStuff.length();
//creating array
dealerdetailsarray =new String[intStuff][12];
if (intStuff != 0) {
String[] str1 = new String[JAStuff.length()];
for(int i=0;i<JAStuff.length();i++)
{
json=JAStuff.getJSONObject(i);
// startManagingCursor(cursor);
// dealerdetailsarray[0][0]=json.getString("dealername");
cursor.addRow(new String[] {json.getString("dealername"),json.getString("product"), json.getString("type"),json.getString("description"),json.getString("location"),json.getString("sublocation"),json.getString("address"),json.getString("phone1"),json.getString("phone2"),json.getString("auth"),json.getString("brands"),json.getString("lat"),json.getString("lon")});
}
}
}
} catch (Exception e) {
Log.e("test",e.toString());
}
return cursor;
}
@Override
protected void onPostExecute(MatrixCursor cursor) {
// super.onPostExecute(aVoid);
try
{
Toast.makeText(getApplicationContext(), cursor.getCount(),Toast.LENGTH_LONG).show();
}
catch (Exception e) {
Log.e("myerror",e.getMessage());
}
}
}
}
You need to return the cursor
object from doInBackground()
to onPostExecute()
. Define your AsyncTask
class as
class XYZTask extends AsyncTask<Void, Void, MatrixCursor>{
protected MatrixCursor doInBackground(Void... void) {
.....
cursor.addRow(new String[] {json.getString("dealername"),json.getString("product"), json.getString("type"),json.getString("description"),json.getString("location"),json.getString("sublocation"),json.getString("address"),json.getString("phone1"),json.getString("phone2"),json.getString("auth"),json.getString("brands"),json.getString("lat"),json.getString("lon")});
return cursor;
}
protected void onPostExecute(MatrixCursor cursor) {
Toast.makeText(getApplicationContext(), cursor.getCount(),Toast.LENGTH_LONG).show();
}
}
and return the cursor
object from doInBackground()
as a parameter to onPostExecute()
.
EDIT:
Define your AsyncTask
like this:
private class getdealerinfo extends AsyncTask<Void,Void,JSONObject> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected JSONObject doInBackground(Void... args) {
/* Building Parameters */
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("pname",selectedproduct));
params.add(new BasicNameValuePair("location",selectedlocation));
/* getting JSON string from URL */
JSONObject json = jParser.makeHttpRequest(dealers_url, "GET", params);
return json;
}
@Override
protected void onPostExecute(JSONObject json) {
// super.onPostExecute(aVoid);
MatrixCursor cursor = new MatrixCursor();
try {
/* Checking for SUCCESS TAG */
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
JSONArray JAStuff = json.getJSONArray(TAG_STUFF);
/** CHECK THE NUMBER OF RECORDS **/
int intStuff = JAStuff.length();
//creating array
dealerdetailsarray =new String[intStuff][12];
if (intStuff != 0) {
String[] str1 = new String[JAStuff.length()];
for(int i=0;i<JAStuff.length();i++)
{
json=JAStuff.getJSONObject(i);
// startManagingCursor(cursor);
// dealerdetailsarray[0][0]=json.getString("dealername");
cursor.addRow(new String[] {json.getString("dealername"),json.getString("product"), json.getString("type"),json.getString("description"),json.getString("location"),json.getString("sublocation"),json.getString("address"),json.getString("phone1"),json.getString("phone2"),json.getString("auth"),json.getString("brands"),json.getString("lat"),json.getString("lon")});
}
}
}
} catch (Exception e) {
Log.e("test",e.toString());
}
Toast.makeText(getApplicationContext(), cursor.getCount(),Toast.LENGTH_LONG).show();
}
}
}
Try this first.
这篇关于Android的 - 添加列矩阵光标和显示列计数吐司导致崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!