gpt4 book ai didi

ListView 中的Android不同行

转载 作者:行者123 更新时间:2023-11-29 21:59:53 25 4
gpt4 key购买 nike

我有一个新闻应用程序,可以从 Web 下载数据并将其显示在 ListView 中,但是我怎样才能使第一行不同、高度更大、布局不同等等?

这是主要 Activity 来源

public class Home extends Activity {
// All static variables
static final String URL = "http://dmb.site50.net/application.php?app_access_key=c4ca4238a0b923820dcc509a6f75849b";
// XML node keys
static final String KEY_SONG = "song"; // parent node
static final String KEY_ID = "id";
static final String KEY_TITLE = "title";
static final String KEY_ARTIST = "artist";
static final String KEY_DURATION = "duration";
static final String KEY_THUMB_URL = "thumb_url";

public static final String TAG_NEWS = "news";
public static final String TAG_ID = "id";
public static final String TAG_TITLE = "title";
public static final String TAG_STORY = "story";
public static final String TAG_SH_STORY = "shorten";
public static final String TAG_DATETIME = "datetime";
public static final String TAG_AUTHOR = "author";
public static final String TAG_IMG = "img";

ListView list;
LazyAdapter adapter;
Button mBtnNaslovnica;
private ViewSwitcher viewSwitcher;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);

mBtnNaslovnica = (Button) findViewById(R.id.mBtnNaslovnica);
mBtnNaslovnica.setSelected(true);
TextView txtView=(TextView) findViewById(R.id.scroller);
txtView.setSelected(true);

ImageButton mBtnRefresh = (ImageButton) findViewById(R.id.btnRefresh);
mBtnRefresh.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new LoadingTask().execute(URL);
}
});


ArrayList<HashMap<String, String>> homeList = new ArrayList<HashMap<String, String>>();



JSONObject jsonobj;
try {
jsonobj = new JSONObject(getIntent().getStringExtra("json"));
JSONArray news = jsonobj.getJSONArray(TAG_NEWS);
for(int i = 0; i < news.length(); i++){
JSONObject c = news.getJSONObject(i);

// Storing each json item in variable
String id = c.getString(TAG_ID);
String title = c.getString(TAG_TITLE);
String story = c.getString(TAG_STORY);
String shorten = c.getString(TAG_SH_STORY);
String author = c.getString(TAG_AUTHOR);
String datetime = c.getString(TAG_DATETIME);
String img = c.getString(TAG_IMG);


// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();

// adding each child node to HashMap key => value
map.put(TAG_ID, id);
map.put(TAG_TITLE, title);
map.put(TAG_STORY, story);
map.put(TAG_IMG, img);
map.put(TAG_DATETIME, datetime);
map.put(TAG_AUTHOR, author);

// adding HashList to ArrayList
homeList.add(map);}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}






list=(ListView)findViewById(R.id.list);

// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(this, homeList);
list.setAdapter(adapter);


// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
String cur_title = ((TextView) view.findViewById(R.id.title)).getText().toString();
String cur_story = ((TextView) view.findViewById(R.id.einfo2)).getText().toString();
String cur_author = ((TextView) view.findViewById(R.id.einfo1)).getText().toString();
String cur_datetime = ((TextView) view.findViewById(R.id.einfo)).getText().toString();
ImageView cur_img = (ImageView) view.findViewById(R.id.list_image);
String cur_img_url = (String) cur_img.getTag();

Intent i = new Intent("com.example.androidhive.CURENTNEWS");
i.putExtra("CUR_TITLE", cur_title);
i.putExtra("CUR_STORY", cur_story);
i.putExtra("CUR_AUTHOR", cur_author);
i.putExtra("CUR_DATETIME", cur_datetime);
i.putExtra("CUR_IMG_URL", cur_img_url);
startActivity(i);
}
});
}

public void loadPage(){

}

public void startNewActivity(){

}
public class LoadingTask extends AsyncTask<String, Object, Object>{
XMLParser parser = new XMLParser();
JSONParser jParser = new JSONParser();
@Override
protected Object doInBackground(String... params) {
// TODO Auto-generated method stub
String URL = params[0];
JSONObject json = jParser.getJSONFromUrl(URL);
//String xml = parser.getXmlFromUrl(URL); // getting XML from URL
// getting DOM element
return json;
}

protected void onPostExecute(Object result){
Intent startApp = new Intent("com.example.androidhive.HOME");
startApp.putExtra("json", result.toString());
startActivity(startApp);
}


}



}

最佳答案

您需要修改您的 LazyAdapter 代码以根据您想要的任何标准为每一行返回正确的布局。 ListView 只是使用适配器提供的 View ,因此每一行的布局都不同并没有什么特别之处。请注意,要使其正常工作,您还需要实现 getItemViewType()getViewTypeCount()

关于 ListView 中的Android不同行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12226465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com