我正在对JSONArray进行排序,并在自定义列表视图中显示它们,但排序后数据在自定义列表视图中没有改变。
下面是fab按钮选择要执行的排序的代码:
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder=new AlertDialog.Builder(SearchResult.this);
builder.setTitle("Sort List Item");
builder.setItems(new CharSequence[]{"By Name", "By Father Name","By EPIC","By House Number"}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
switch (i)
{
case 0:
Toast.makeText(getApplicationContext(), "By Name", Toast.LENGTH_SHORT).show();
sortJsonTechnique="1";
if (myData)
{
sortByName(sortdata,sortJsonTechnique);
}
break;
case 1:
Toast.makeText(getApplicationContext(), "By Father Name", Toast.LENGTH_SHORT).show();
sortJsonTechnique="2";
if (myData)
{
sortByName(sortdata,sortJsonTechnique);
}
break;
case 2:
Toast.makeText(getApplicationContext(), "By EPIC", Toast.LENGTH_SHORT).show();
sortJsonTechnique="3";
if (myData)
{
sortByName(sortdata,sortJsonTechnique);
}
break;
case 3:
Toast.makeText(getApplicationContext(), "By House Number", Toast.LENGTH_SHORT).show();
sortJsonTechnique="4";
if (myData)
{
sortByName(sortdata,sortJsonTechnique);
}
break;
default:
break;
}
}
});
builder.show();
}
});
在fab按钮中进行选择后,单击i sort json Array。下面是解析json数组的代码:
private void sortByName(String mysortJson,String sortType)
{
List<JSONObject> jsonObjects=new ArrayList<JSONObject>();
try {
JSONObject object=new JSONObject(mysortJson);
JSONArray jsonArray=object.getJSONArray("Data");
for (int i=0;i<jsonArray.length();i++)
{
jsonObjects.add(jsonArray.getJSONObject(i));
}
if (sortType.equals("1"))
{
Collections.sort(jsonObjects, new Comparator<JSONObject>() {
@Override
public int compare(JSONObject a, JSONObject b) {
String val1=new String();
String val2=new String();
try {
val1=(String) a.get("Name");
// Log.e("Value1",""+val1);
val2=(String) b.get("Name");
// Log.e("Value2",""+val2);
} catch (JSONException e) {
e.printStackTrace();
}
return val1.compareTo(val2);
}
});
for (int j=0;j<jsonObjects.size();j++)
{
jsonArray.put(jsonObjects.get(j));
}
voter_id=new String[jsonArray.length()];
boothname_id=new String[jsonArray.length()];
voter_name=new String[jsonArray.length()];
voter_f_m_h_name=new String[jsonArray.length()];
voter_epic=new String[jsonArray.length()];
voter_h_no=new String[jsonArray.length()];
voter_mobile=new String[jsonArray.length()];
voter_gender=new String[jsonArray.length()];
voter_age=new String[jsonArray.length()];
get_voter_dob=new String[jsonArray.length()];
get_marriage_anniv=new String[jsonArray.length()];
get_voter_caste_id=new String[jsonArray.length()];
get_voter_status_id=new String[jsonArray.length()];
get_voter_social_status_id=new String[jsonArray.length()];
for (int c=0;c<jsonArray.length();c++)
{
JSONObject fetchVoter = jsonArray.getJSONObject(c);
voter_id[c] = fetchVoter.getString(KEY_VOTER_ID);
boothname_id[c] = fetchVoter.getString(KEY_BOOTHNAME_ID);
voter_name[c] = fetchVoter.getString(KEY_SEARCH_NAME);
voter_f_m_h_name[c] = fetchVoter.getString(KEY_SEARCH_F_H_M_NAME);
voter_epic[c] = fetchVoter.getString(KEY_SEARCH_EPIC_NAME);
voter_h_no[c] = fetchVoter.getString(KEY_SEARCH_HOUSE_NUMBER);
voter_mobile[c]=fetchVoter.getString(KEY_SEARCH_MOBILE);
voter_gender[c]=fetchVoter.getString(KEY_SEARCH_GENDER);
voter_age[c]=fetchVoter.getString(KEY_SEARCH_AGE);
get_voter_dob[c]=fetchVoter.getString(KEY_SEARCH_DOB);
get_marriage_anniv[c]=fetchVoter.getString(KEY_MARRIEGE_ANNIV);
get_voter_caste_id[c]=fetchVoter.getString(KEY_GET_CASTE_ID);
get_voter_status_id[c]=fetchVoter.getString(KEY_GET_STATUS_ID);
get_voter_social_status_id[c]=fetchVoter.getString(KEY_GET_SOCIAL_STATUS);
}
CustomSearchList adapter=new CustomSearchList(this,ParseJsonData.voter_id,ParseJsonData.boothname_id,ParseJsonData.voter_name,ParseJsonData.voter_f_m_h_name,ParseJsonData.voter_epic,ParseJsonData.voter_h_no,ParseJsonData.voter_mobile,ParseJsonData.voter_age,ParseJsonData.voter_gender,ParseJsonData.get_marriage_anniv,ParseJsonData.get_voter_dob,ParseJsonData.get_voter_caste_id,ParseJsonData.get_voter_status_id,ParseJsonData.get_voter_social_status_id);
searchlist.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
else if (sortType.equals("2"))
{
Collections.sort(jsonObjects, new Comparator<JSONObject>() {
@Override
public int compare(JSONObject a, JSONObject b) {
String val1=new String();
String val2=new String();
try {
val1=(String) a.get("FName");
// Log.e("Value1",""+val1);
val2=(String) b.get("FName");
// Log.e("Value2",""+val2);
} catch (JSONException e) {
e.printStackTrace();
}
return val1.compareTo(val2);
}
});
for (int j=0;j<jsonObjects.size();j++)
{
jsonArray.put(jsonObjects.get(j));
}
voter_id=new String[jsonArray.length()];
boothname_id=new String[jsonArray.length()];
voter_name=new String[jsonArray.length()];
voter_f_m_h_name=new String[jsonArray.length()];
voter_epic=new String[jsonArray.length()];
voter_h_no=new String[jsonArray.length()];
voter_mobile=new String[jsonArray.length()];
voter_gender=new String[jsonArray.length()];
voter_age=new String[jsonArray.length()];
get_voter_dob=new String[jsonArray.length()];
get_marriage_anniv=new String[jsonArray.length()];
get_voter_caste_id=new String[jsonArray.length()];
get_voter_status_id=new String[jsonArray.length()];
get_voter_social_status_id=new String[jsonArray.length()];
for (int c=0;c<jsonArray.length();c++)
{
JSONObject fetchVoter = jsonArray.getJSONObject(c);
voter_id[c] = fetchVoter.getString(KEY_VOTER_ID);
boothname_id[c] = fetchVoter.getString(KEY_BOOTHNAME_ID);
voter_name[c] = fetchVoter.getString(KEY_SEARCH_NAME);
voter_f_m_h_name[c] = fetchVoter.getString(KEY_SEARCH_F_H_M_NAME);
voter_epic[c] = fetchVoter.getString(KEY_SEARCH_EPIC_NAME);
voter_h_no[c] = fetchVoter.getString(KEY_SEARCH_HOUSE_NUMBER);
voter_mobile[c]=fetchVoter.getString(KEY_SEARCH_MOBILE);
voter_gender[c]=fetchVoter.getString(KEY_SEARCH_GENDER);
voter_age[c]=fetchVoter.getString(KEY_SEARCH_AGE);
get_voter_dob[c]=fetchVoter.getString(KEY_SEARCH_DOB);
get_marriage_anniv[c]=fetchVoter.getString(KEY_MARRIEGE_ANNIV);
get_voter_caste_id[c]=fetchVoter.getString(KEY_GET_CASTE_ID);
get_voter_status_id[c]=fetchVoter.getString(KEY_GET_STATUS_ID);
get_voter_social_status_id[c]=fetchVoter.getString(KEY_GET_SOCIAL_STATUS);
}
CustomSearchList adapter=new CustomSearchList(this,ParseJsonData.voter_id,ParseJsonData.boothname_id,ParseJsonData.voter_name,ParseJsonData.voter_f_m_h_name,ParseJsonData.voter_epic,ParseJsonData.voter_h_no,ParseJsonData.voter_mobile,ParseJsonData.voter_age,ParseJsonData.voter_gender,ParseJsonData.get_marriage_anniv,ParseJsonData.get_voter_dob,ParseJsonData.get_voter_caste_id,ParseJsonData.get_voter_status_id,ParseJsonData.get_voter_social_status_id);
searchlist.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
else if (sortType.equals("3"))
{
Collections.sort(jsonObjects, new Comparator<JSONObject>() {
@Override
public int compare(JSONObject a, JSONObject b) {
String val1=new String();
String val2=new String();
try {
val1=(String) a.get("EPIC");
// Log.e("Value1",""+val1);
val2=(String) b.get("EPIC");
// Log.e("Value2",""+val2);
} catch (JSONException e) {
e.printStackTrace();
}
return val1.compareTo(val2);
}
});
for (int j=0;j<jsonObjects.size();j++)
{
jsonArray.put(jsonObjects.get(j));
}
voter_id=new String[jsonArray.length()];
boothname_id=new String[jsonArray.length()];
voter_name=new String[jsonArray.length()];
voter_f_m_h_name=new String[jsonArray.length()];
voter_epic=new String[jsonArray.length()];
voter_h_no=new String[jsonArray.length()];
voter_mobile=new String[jsonArray.length()];
voter_gender=new String[jsonArray.length()];
voter_age=new String[jsonArray.length()];
get_voter_dob=new String[jsonArray.length()];
get_marriage_anniv=new String[jsonArray.length()];
get_voter_caste_id=new String[jsonArray.length()];
get_voter_status_id=new String[jsonArray.length()];
get_voter_social_status_id=new String[jsonArray.length()];
for (int c=0;c<jsonArray.length();c++)
{
JSONObject fetchVoter = jsonArray.getJSONObject(c);
voter_id[c] = fetchVoter.getString(KEY_VOTER_ID);
boothname_id[c] = fetchVoter.getString(KEY_BOOTHNAME_ID);
voter_name[c] = fetchVoter.getString(KEY_SEARCH_NAME);
voter_f_m_h_name[c] = fetchVoter.getString(KEY_SEARCH_F_H_M_NAME);
voter_epic[c] = fetchVoter.getString(KEY_SEARCH_EPIC_NAME);
voter_h_no[c] = fetchVoter.getString(KEY_SEARCH_HOUSE_NUMBER);
voter_mobile[c]=fetchVoter.getString(KEY_SEARCH_MOBILE);
voter_gender[c]=fetchVoter.getString(KEY_SEARCH_GENDER);
voter_age[c]=fetchVoter.getString(KEY_SEARCH_AGE);
get_voter_dob[c]=fetchVoter.getString(KEY_SEARCH_DOB);
get_marriage_anniv[c]=fetchVoter.getString(KEY_MARRIEGE_ANNIV);
get_voter_caste_id[c]=fetchVoter.getString(KEY_GET_CASTE_ID);
get_voter_status_id[c]=fetchVoter.getString(KEY_GET_STATUS_ID);
get_voter_social_status_id[c]=fetchVoter.getString(KEY_GET_SOCIAL_STATUS);
}
CustomSearchList adapter=new CustomSearchList(this,ParseJsonData.voter_id,ParseJsonData.boothname_id,ParseJsonData.voter_name,ParseJsonData.voter_f_m_h_name,ParseJsonData.voter_epic,ParseJsonData.voter_h_no,ParseJsonData.voter_mobile,ParseJsonData.voter_age,ParseJsonData.voter_gender,ParseJsonData.get_marriage_anniv,ParseJsonData.get_voter_dob,ParseJsonData.get_voter_caste_id,ParseJsonData.get_voter_status_id,ParseJsonData.get_voter_social_status_id);
searchlist.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
else if (sortType.equals(4))
{
Collections.sort(jsonObjects, new Comparator<JSONObject>() {
@Override
public int compare(JSONObject a, JSONObject b) {
String val1=new String();
String val2=new String();
try {
val1=(String) a.get("HouseNo");
// Log.e("Value1",""+val1);
val2=(String) b.get("HouseNo");
// Log.e("Value2",""+val2);
} catch (JSONException e) {
e.printStackTrace();
}
return val1.compareTo(val2);
}
});
for (int j=0;j<jsonObjects.size();j++)
{
jsonArray.put(jsonObjects.get(j));
}
voter_id=new String[jsonArray.length()];
boothname_id=new String[jsonArray.length()];
voter_name=new String[jsonArray.length()];
voter_f_m_h_name=new String[jsonArray.length()];
voter_epic=new String[jsonArray.length()];
voter_h_no=new String[jsonArray.length()];
voter_mobile=new String[jsonArray.length()];
voter_gender=new String[jsonArray.length()];
voter_age=new String[jsonArray.length()];
get_voter_dob=new String[jsonArray.length()];
get_marriage_anniv=new String[jsonArray.length()];
get_voter_caste_id=new String[jsonArray.length()];
get_voter_status_id=new String[jsonArray.length()];
get_voter_social_status_id=new String[jsonArray.length()];
for (int c=0;c<jsonArray.length();c++)
{
JSONObject fetchVoter = jsonArray.getJSONObject(c);
voter_id[c] = fetchVoter.getString(KEY_VOTER_ID);
boothname_id[c] = fetchVoter.getString(KEY_BOOTHNAME_ID);
voter_name[c] = fetchVoter.getString(KEY_SEARCH_NAME);
voter_f_m_h_name[c] = fetchVoter.getString(KEY_SEARCH_F_H_M_NAME);
voter_epic[c] = fetchVoter.getString(KEY_SEARCH_EPIC_NAME);
voter_h_no[c] = fetchVoter.getString(KEY_SEARCH_HOUSE_NUMBER);
voter_mobile[c]=fetchVoter.getString(KEY_SEARCH_MOBILE);
voter_gender[c]=fetchVoter.getString(KEY_SEARCH_GENDER);
voter_age[c]=fetchVoter.getString(KEY_SEARCH_AGE);
get_voter_dob[c]=fetchVoter.getString(KEY_SEARCH_DOB);
get_marriage_anniv[c]=fetchVoter.getString(KEY_MARRIEGE_ANNIV);
get_voter_caste_id[c]=fetchVoter.getString(KEY_GET_CASTE_ID);
get_voter_status_id[c]=fetchVoter.getString(KEY_GET_STATUS_ID);
get_voter_social_status_id[c]=fetchVoter.getString(KEY_GET_SOCIAL_STATUS);
}
CustomSearchList adapter=new CustomSearchList(this,ParseJsonData.voter_id,ParseJsonData.boothname_id,ParseJsonData.voter_name,ParseJsonData.voter_f_m_h_name,ParseJsonData.voter_epic,ParseJsonData.voter_h_no,ParseJsonData.voter_mobile,ParseJsonData.voter_age,ParseJsonData.voter_gender,ParseJsonData.get_marriage_anniv,ParseJsonData.get_voter_dob,ParseJsonData.get_voter_caste_id,ParseJsonData.get_voter_status_id,ParseJsonData.get_voter_social_status_id);
searchlist.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
// Log.e("Length Array",""+jsonArray.length());
// Log.e("Length List",""+jsonObjects.size());
} catch (JSONException e) {
e.printStackTrace();
}
}
我使用`Adapter.NotifyDataSetChanged();但我的自定义列表不会影响排序。请建议我怎么做。
在将数据设置为Listview之前,您应该使用Java中的comparator类对数据进行排序。
您创建一个模型类,其中包含您想要的所有变量(名称、BOOTHID等),并将每个对象存储到ArrayList中。
Collections.sort(ArrayListObject,new NameComparator());
示例
class NameComparator implements Comparator{
public int compare(Object o1,Object o2){
YourClassName s1=(YourClassName )o1;
YourClassName s2=(YourClassName )o2;
return s1.name.compareTo(s2.name);
}
}
我已经成功地实现了一个google可视化表,并通过添加events listener为一列添加了自定义排序过程。 背景:数据来自数据库以呈现表。我有几个表列带有“Status”列。此列应根据不显示该表的另一个数据字段进行排序。(所有数据都来自数据库,只需一次查询。它们都运行良好。)在addListener中,我根据自己的需求对从数据库中获取的数组进行排序,并通过
我有一个具有自定义列表视图的应用程序,它具有文本视图和图像(删除),当我单击图像时,该行的背景颜色应更改,当我再次单击相同的图像时,其背景应更改为默认颜色。我可以改变背景颜色,但只有一次,我不能改变它两次,我的意思是我不能恢复到它的默认颜色。 这是我的密码。。。 CustomListView.java 还有一个问题是,背景色不是我在《颜色》中提到的颜色。xml,我通过放置不同的颜色进行了测试,但是
所以我正在创建一个列表视图,其中每一行都有一个Imageview(用于预览图像)、一个textView和一个按钮(用于删除图像)。 问题: 单击该项目的 但有时代码工作正常,有时只是显示错误的项目编号。 更新: 我忘了补充,文本视图中显示的值是:“标志:#”其中#是该项目的当前计数号。我不能理解的总是正确的,但不是我得到的祝酒词: s 背景工作: 页面顶部有一个按钮,用户可以通过该按钮单击照片,当
我的应用程序中有一个ListView,我想对条目进行排序。我还希望列表自动排序,如果一个新的条目被添加。 为此,我使用sortedlist。Java API表示“ObservableList中的所有更改都会立即传播到SortedList中”。
我试着在谷歌和专门的论坛上搜索这个问题,但什么也没找到。 我的问题是:我有一个带代表的列表视图,根据Qt指南从C模型中读取数据。 当项目超出可见区域时,我不能使用滚动条,但我会得到如下结果: 其中3点将被启用/禁用,以告诉列表可以根据视图中的项目数量向上或向下滚动。 总之,它就像一个定制的滚动条。 你对实现这种行为有什么建议吗?或者我可以看看哪里?谢谢你。克里斯蒂亚诺
问题内容: 阅读完之后:http : //pandas.pydata.org/pandas- docs/version/0.13.1/genic/pandas.DataFrame.sort.html 我似乎仍然无法弄清楚如何通过自定义列表对列进行排序。显然,默认排序是字母顺序的。我举一个例子。这是我的(非常删节的)数据帧: 我希望能够按播放器,年份和Tm进行排序。按玩家和年份的默认排序对我来说是正