自定义adapter:
public class MyAdapter extends BaseAdapter {
private Context context
private List<Joker> list
private LayoutInflater inflater = null
public MyAdapter(Context context, List<Joker> list) {
this.context = context
this.list = list
inflater = LayoutInflater.from(context)
}
@Override
public int getCount() {
return list.size()
}
@Override
public Object getItem(int position) {
return list.get(position)
}
@Override
public long getItemId(int position) {
return position
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null
if(convertView==null){
holder=new ViewHolder()
convertView=inflater.inflate(R.layout.joker_item,null)
holder.tv_title= (TextView) convertView.findViewById(R.id.tv_title)
holder.tv_content= (TextView) convertView.findViewById(R.id.tv_content)
holder.tv_url= (TextView) convertView.findViewById(R.id.tv_url)
holder.tv_content.setMovementMethod(ScrollingMovementMethod.getInstance())
convertView.setTag(holder)
}else {
holder= (ViewHolder) convertView.getTag()
}
Joker joker= (Joker) getItem(position)
holder.tv_title.setText(joker.getTitle().toString())
holder.tv_content.setText(joker.getContent().toString()+joker.getPoster())
// CharSequence cs= Html.escapeHtml(joker.getContent().toString())
// holder.tv_content.setText(cs)
// holder.tv_content.setMovementMethod(LinkMovementMethod.getInstance())
holder.tv_url.setText(joker.getUrl().toString())
holder.tv_url.setMovementMethod(LinkMovementMethod.getInstance())
return convertView
}
class ViewHolder {
private TextView tv_title,tv_content,tv_url
}
}
MainAcvitity:
public class MainActivity extends AppCompatActivity {
private ListView lv_joker
private String url="http://api.laifudao.com/open/xiaohua.json"
private MyThread thread=null
private MyHandle handle=null
private List<Joker> list=new ArrayList<>()
private String result=null
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
handle=new MyHandle()
lv_joker= (ListView) findViewById(R.id.lv_joker)
//②在主线程中开启子线程
if(thread==null){
thread=new MyThread()
thread.start()
}
}
/**
* ①定义子线程用于访问网络获取数据并发送给主线程
*/
class MyThread extends Thread{
//重写run方法
@Override
public void run() {
super.run()
//④调用访问网络的get方法,并获取数据发送给主线程,
result=loadingGet()
Message message=handle.obtainMessage(1,result)
handle.sendMessage(message)
}
}
/**
* ③自定义访问网络的get方法,获取数据
*/
private String loadingGet(){
try {
URL newUrl=new URL(url)
HttpURLConnection conn= (HttpURLConnection) newUrl.openConnection()
conn.setRequestMethod("GET")
int code=conn.getResponseCode()
if(code==200){
InputStream is=conn.getInputStream()
InputStreamReader inreader=new InputStreamReader(is)
String line=""
BufferedReader reader=new BufferedReader(inreader)
StringBuffer buffer=new StringBuffer()
while ((line=reader.readLine())!=null){
buffer.append(line)
}
reader.close()
inreader.close()
is.close()
conn.disconnect()
return buffer.toString()
}
} catch (MalformedURLException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
}
return "访问失败"
}
/**
* ⑤自定义Handle类接收并处理数据
*
*/
class MyHandle extends Handler{
private JSONArray array=null
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg)
switch (msg.what){
case 1:
try {
array=new JSONArray(result)
for (int i = 0
JSONObject obj=array.getJSONObject(i)
Joker joker=new Joker()
joker.setTitle(obj.getString("title"))
joker.setContent(obj.getString("content")+obj.getString("poster"))
joker.setUrl(obj.getString("url"))
list.add(joker)
}
MyAdapter adapter=new MyAdapter(MainActivity.this,list)
lv_joker.setAdapter(adapter)
} catch (JSONException e) {
e.printStackTrace()
}
break
}
}
}