政策一点通前端

package com.example.profit1;

import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ExpandableListView;
import androidx.appcompat.app.AppCompatActivity;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.widget.ExpandableListView;
import android.view.LayoutInflater;
import android.content.Context;
import android.widget.BaseExpandableListAdapter;
import android.view.ViewGroup;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";
private EditText keywordEditText;
private Button searchButton;
private ExpandableListView expandableListView;
private List<String> groupTitles;
private HashMap<String, List<Spanned>> childData;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    keywordEditText = findViewById(R.id.keywordEditText);
    searchButton = findViewById(R.id.searchButton);
    expandableListView = findViewById(R.id.expandableListView);

    searchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String keyword = keywordEditText.getText().toString();
            Log.d(TAG, "Search button clicked with keyword: " + keyword);
            new SearchPolicyTask().execute(keyword);
        }
    });
}

private class SearchPolicyTask extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
        String keyword = params[0];
        String result = "";

        try {
            URL url = new URL("http://192.168.141.106:8080/profit_war_exploded/searchPolicy?keyword=" + keyword);
            Log.d(TAG, "URL: " + url.toString());

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");

            int responseCode = conn.getResponseCode();
            Log.d(TAG, "Response Code: " + responseCode);

            if (responseCode == HttpURLConnection.HTTP_OK) {
                BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                String inputLine;
                StringBuilder response = new StringBuilder();

                while ((inputLine = in.readLine()) != null) {
                    response.append(inputLine);
                }
                in.close();

                result = response.toString();
                Log.d(TAG, "Response Data: " + result); // 打印响应数据
            } else {
                Log.e(TAG, "Failed to get response. Response Code: " + responseCode);
            }
        } catch (Exception e) {
            Log.e(TAG, "Exception occurred: ", e);
        }

        return result;
    }

    @Override
    protected void onPostExecute(String result) {
        try {
            if (result == null || result.isEmpty()) {
                Log.d(TAG, "No data found in response.");
                return;
            }

            JSONArray jsonArray = new JSONArray(result);
            if (jsonArray.length() == 0) {
                Log.d(TAG, "JSON array is empty.");
                return;
            }

            groupTitles = new ArrayList<>();
            childData = new HashMap<>();

            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String name = jsonObject.getString("name");
                String text = jsonObject.getString("text");
                Spanned spannedText = Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT);

                groupTitles.add(name);
                List<Spanned> texts = new ArrayList<>();
                texts.add(spannedText);
                childData.put(name, texts);
            }

            ExpandableListAdapter listAdapter = new ExpandableListAdapter(MainActivity.this, groupTitles, childData);
            expandableListView.setAdapter(listAdapter);
        } catch (Exception e) {
            Log.e(TAG, "Error parsing JSON data: ", e);
        }
    }
}

public class ExpandableListAdapter extends BaseExpandableListAdapter {

    private Context context;
    private List<String> groupTitles;
    private HashMap<String, List<Spanned>> childData;

    public ExpandableListAdapter(Context context, List<String> groupTitles, HashMap<String, List<Spanned>> childData) {
        this.context = context;
        this.groupTitles = groupTitles;
        this.childData = childData;
    }

    @Override
    public int getGroupCount() {
        return groupTitles.size();
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        return childData.get(groupTitles.get(groupPosition)).size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        return groupTitles.get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return childData.get(groupTitles.get(groupPosition)).get(childPosition);
    }

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        String groupName = (String) getGroup(groupPosition);
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.group_item, null);
        }
        TextView groupTitleTextView = convertView.findViewById(R.id.groupTitle);
        groupTitleTextView.setText(groupName);
        return convertView;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        Spanned childText = (Spanned) getChild(groupPosition, childPosition);
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.child_item, null);
        }
        TextView childTextView = convertView.findViewById(R.id.childText);
        childTextView.setText(childText);
        return convertView;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }
}

}

posted @ 2025-06-05 21:02  ytr123  阅读(8)  评论(0)    收藏  举报