162.n1-左侧边栏数据的初始化

本文介绍如何使用ViewPager与左侧边栏进行数据交互,并通过ListView实现左侧边栏。主要内容包括去除ListView分割线、定义列表项布局及选择器样式,以及通过NewsCenterPager类和LeftMenuFragment实现数据获取与展示。

ViewPager和左侧边栏数据的交互,然后通过lIstView实现左侧边栏,下面主要是实现获取到ViewPager的数据,然后监听左边菜单的点击事件,实现对左边的监听


去掉listView的分割线android:dividerHeight="0dp"

fragment_left_menu.xml左侧边栏的ListView布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000"
    android:orientation="vertical" >
    
	<!-- 侧边栏 -->
	<ListView 
	    android:id="@+id/lv_list"
	   	android:layout_marginTop="40dp"
	    android:layout_width="match_parent"
	    android:dividerHeight="0dp"
    	android:layout_height="wrap_content"
    	android:listSelector="@null"
	    />
</LinearLayout>

lsit_menu_item.xml单个条目

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp"
    android:orientation="vertical" >
    
	<!-- 左侧菜单单个条目的布局 -->
	<TextView 
	    android:id="@+id/tv_title"
	    android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:textColor="@drawable/menu_text_selector"
    	android:textSize="22sp"
    	android:text="新闻"
    	android:layout_gravity="center"
    	android:enabled="false"
    	android:drawablePadding="5dp"
    	android:drawableLeft="@drawable/menu_listview_selector"
	    />
</LinearLayout>

menu_listview_selectorxml左侧的箭头的选择器,点击的时候显示不同的图片由于是listView因此使用state_enabled

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 左侧menu条目的点击 -->
    <!-- 点击的时候是红色,listView的条目是使用enbale,来设置selector能否使用 -->
	<item android:state_enabled="true" android:drawable="@drawable/menu_arr_select"/>
	<!-- 常规状态字体是白色 -->
	<item android:drawable="@drawable/menu_arr_normal"/>
</selector>

menu_text_selector.xml左侧文本颜色的选择器,点击的时候显示不同的颜色由于是listView因此使用state_enabled

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 左侧menu条目的点击 -->
    <!-- 点击的时候是红色,listView的条目是使用enbale,来设置selector能否使用 -->
	<item android:state_enabled="true" android:color="#ff0000"/>
	<!-- 常规状态字体是白色 -->
	<item android:color="@android:color/white"/>
</selector>

NewsCenterPager.java主要是传递数据

package com.ldw.news.base.impl;

import android.app.Activity;
import android.graphics.Color;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.google.gson.Gson;
import com.ldw.news.MainActivity;
import com.ldw.news.base.BasePager;
import com.ldw.news.domain.NewsData;
import com.ldw.news.fragment.LeftMenuFragment;
import com.ldw.news.global.ClobalContants;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;

/**
 * 新闻中心
 * 
 * @author Kevin
 * 
 */
public class NewsCenterPager extends BasePager {

	//private ArrayList<BaseMenuDetailPager> mPagers;// 4个菜单详情页的集合
	private NewsData mNewsData;
	
	public NewsCenterPager(Activity activity) {
		super(activity);
	}

	@Override
	public void initData() {
		System.out.println("初始化设置数据....");
		
		tvTitle.setText("设置");
		//btnMenu.setVisibility(View.GONE);// 隐藏菜单按钮
		setSlidingMenuEnable(true);// 关闭侧边栏

		TextView text = new TextView(mActivity);
		text.setText("设置");
		text.setTextColor(Color.RED);
		text.setTextSize(25);
		text.setGravity(Gravity.CENTER);

		// 向FrameLayout中动态添加布局
		flContent.addView(text);
		//从服务器中获取数据
		getDataFromServer();
	}
	
	/*
	 * 从服务器中获取数据,使用xUtils实现
	 */
	private void getDataFromServer(){
		HttpUtils utils = new HttpUtils();
		//参数是String获取到的是String
		utils.send(HttpMethod.GET, ClobalContants.CATEGORIES_URL, new RequestCallBack<String>(){

			@Override
			public void onSuccess(ResponseInfo<String> responseInfo) {
				//获取到返回的结果
				String result = (String) responseInfo.result;
				System.out.println("返回结果:" + result);

				parseData(result);
				
			}

			//访问失败
			@Override
			public void onFailure(HttpException error, String msg) {
				Toast.makeText(mActivity, msg, Toast.LENGTH_SHORT)
				.show();
				//打印错误信息
				error.printStackTrace();
				
			}
			
		});
	}
	
	/*
	 * 解析网络数据
	 */
	protected void parseData(String result) {
		//使用Gson解析
		Gson gson = new Gson();
		//第一个参数是数据,第二个参数是要转化成什么对象
		mNewsData = gson.fromJson(result, NewsData.class);
		System.out.println("解析结果:" + mNewsData);
		
		// 刷新测边栏的数据,利用MainActivity获取到左侧边栏的数据
		MainActivity mainUi = (MainActivity) mActivity;
		//获取到左侧边栏的对象
		LeftMenuFragment leftMenuFragment = mainUi.getLeftMenuFragment();
		//设置网络数据
		leftMenuFragment.setMenuData(mNewsData);
	}

}

LeftMenuFragement.java左侧边栏的逻辑代码

package com.ldw.news.fragment;

import java.util.ArrayList;

import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.ldw.news.R;
import com.ldw.news.domain.NewsData;
import com.ldw.news.domain.NewsData.NewsMenuData;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;

/*
 * 左侧边栏的内容
 */
public class LeftMenuFragment extends BaseFragment{
	@ViewInject(R.id.lv_list)
	private ListView lv_list;
	private ArrayList<NewsMenuData> mMenuList;
	private MenuAdapter mAdapter;
	private int mCurrentPosition;//当前被点击的菜单栏目
	//初始化布局
	@Override
	public View initViews() {
		View view = View.inflate(mActivity, R.layout.fragment_left_menu, null);
		ViewUtils.inject(this, view);
		return view;
	}
	
	public void initData(){
		
		lv_list.setOnItemClickListener(new OnItemClickListener(){

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				mCurrentPosition = position;
				//更新getItem获取的
				mAdapter.notifyDataSetChanged();
			}
			
		});
	}
	
	//设置网络数据
	public void setMenuData(NewsData data){
		System.out.println("左侧的数据是:" + data);
		mMenuList = data.data;
		mAdapter = new MenuAdapter();
		lv_list.setAdapter(mAdapter);
	}
	
	class MenuAdapter extends BaseAdapter{

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return mMenuList.size();
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return mMenuList.get(position);
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			View view = View.inflate(mActivity, R.layout.list_menu_item, null);
			TextView tv_title = (TextView)view.findViewById(R.id.tv_title);	
			//获取到对应位置的data4组中的数据
			NewsMenuData newsMenuData = (NewsMenuData) getItem(position);
			
			tv_title.setText(newsMenuData.title);
			
			//判断点击的mCurrentPosition是不是tPosition一致,也就是被选中
			if(mCurrentPosition == position){
				// 显示红色,让listView的selector生效,state_enabled的时候是红色
				tv_title.setEnabled(true);
			} else {
				// 显示白色
				tv_title.setEnabled(false);
			}
			return view;
		}
		
	}

}


成都市作为中国西部地区具有战略地位的核心都市,其人口的空间分布状况对于城市规划、社会经济发展及公共资源配置等研究具有基础性数据价值。本文聚焦于2019年度成都市人口分布的空间数据集,该数据以矢量格式存储,属于地理信息系统中常用的数据交换形式。以下将对数据集内容及其相关技术要点进行系统阐述。 Shapefile 是一种由 Esri 公司提出的开放型地理空间数据格式,用于记录点、线、面等几何要素。该格式通常由一组相互关联的文件构成,主要包括存储几何信息的 SHP 文件、记录属性信息的 DBF 文件、定义坐标系统的 PRJ 文件以及提供快速检索功能的 SHX 文件。 1. **DBF 文件**:该文件以 dBase 表格形式保存与各地理要素相关联的属性信息,例如各区域的人口统计数值、行政区划名称及编码等。这类表格结构便于在各类 GIS 平台中进行查询与编辑。 2. **PRJ 文件**:此文件明确了数据所采用的空间参考系统。本数据集基于 WGS84 地理坐标系,该坐标系在全球范围内广泛应用于定位与空间分析,有助于实现跨区域数据的准确整合。 3. **SHP 文件**:该文件存储成都市各区(县)的几何边界,以多边形要素表示。每个多边形均配有唯一标识符,可与属性表中的相应记录关联,实现空间数据与统计数据的联结。 4. **SHX 文件**:作为形状索引文件,它提升了在大型数据集中定位特定几何对象的效率,支持快速读取与显示。 基于上述数据,可开展以下几类空间分析: - **人口密度评估**:结合各区域面积与对应人口数,计算并比较人口密度,识别高密度与低密度区域。 - **空间集聚识别**:运用热点分析(如 Getis-Ord Gi* 统计)或聚类算法(如 DBSCAN),探测人口在空间上的聚集特征。 - **空间相关性检验**:通过莫兰指数等空间自相关方法,分析人口分布是否呈现显著的空间关联模式。 - **多要素叠加分析**:将人口分布数据与地形、交通网络、环境指标等其他地理图层进行叠加,探究自然与人文因素对人口布局的影响机制。 2019 年成都市人口空间数据集为深入解析城市人口格局、优化国土空间规划及完善公共服务体系提供了重要的数据基础。借助地理信息系统工具,可开展多尺度、多维度的定量分析,从而为城市管理与学术研究提供科学依据。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
【顶级EI复现】计及连锁故障传播路径的电力系统 N-k 多阶段双层优化及故障场景筛选模型(Matlab代码实现)内容概要:本文介绍了名为《【顶级EI复现】计及连锁故障传播路径的电力系统 N-k 多阶段双层优化及故障场景筛选模型(Matlab代码实现)》的技术资源,重点围绕电力系统中连锁故障的传播路径展开研究,提出了一种N-k多阶段双层优化模型,并结合故障场景筛选方法,用于提升电力系统在复杂故障条件下的安全性与鲁棒性。该模型通过Matlab代码实现,具备较强的工程应用价值和学术参考意义,适用于电力系统风险评估、脆弱性分析及预防控制策略设计等场景。文中还列举了大量相关的科研技术支持方向,涵盖智能优化算法、机器学习、路径规划、信号处理、电力系统管理等多个领域,展示了广泛的仿真与复现能力。; 适合人群:具备电力系统、自动化、电气工程等相关背景,熟悉Matlab编程,有一定科研基础的研究生、高校教师及工程技术人员。; 使用场景及目标:①用于电力系统连锁故障建模与风险评估研究;②支撑高水平论文(如EI/SCI)的模型复现与算法验证;③为电网安全分析、故障传播防控提供优化决策工具;④结合YALMIP等工具进行数学规划求解,提升科研效率。; 阅读建议:建议读者结合提供的网盘资源,下载完整代码与案例进行实践操作,重点关注双层优化结构与场景筛选逻辑的设计思路,同时可参考文档中提及的其他复现案例拓展研究视野。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值