里面包括Button、Checkbock、listview、popupwindow的自定义

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button; public class AndroidWidgetActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
}
public void tolistmain(View view){
Intent intent = new Intent(this, ListMainActivity.class);
startActivity(intent);
}
public void topopwindowmain(View view){
Intent intent = new Intent(this, PopwindowMainActivity.class);
startActivity(intent);
}
}
import java.util.List;
import cn.ittest.domain.item;
import cn.ittest.widget.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView; public class ListAdapter extends BaseAdapter { List<item> items;
private int resource;
private LayoutInflater inflater;
public ListAdapter(Context context,List<item> items,int resource) {
this.resource = resource;
this.items = items;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} @Override
public int getCount() {
return items.size();
} @Override
public Object getItem(int position) {
return items.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imgView = null;
TextView titleView = null;
TextView expView = null;
if(convertView==null){
convertView = inflater.inflate(resource, null);//生成条目界面对象
imgView = (ImageView) convertView.findViewById(R.id.img);
titleView = (TextView) convertView.findViewById(R.id.tvtitle);
expView = (TextView) convertView.findViewById(R.id.tvexp); ViewCache cache = new ViewCache();
cache.imgView = imgView;
cache.titleView = titleView;
cache.expView = expView;
convertView.setTag(cache);
}else{
ViewCache cache = (ViewCache) convertView.getTag();
imgView = cache.imgView;
titleView = cache.titleView;
expView = cache.expView;
}
item listItem = items.get(position);
imgView.setImageResource(R.drawable.listtitle);
titleView.setText(listItem.getTitle());
expView.setText(listItem.getExp()); return convertView;
} private final class ViewCache{
public ImageView imgView;
public TextView titleView;
public TextView expView;
}
}
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams;
import android.widget.Toast; public class PopwindowMainActivity extends Activity{ private int screenx = 0;
private int screeny = 0;
private int x=0,y=0;
private EditText edtx;
private EditText edty;
private TextView showxy;
private Button sure;
private Button cancle;
private PopupWindow popupWindow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pop);
edtx = (EditText)this.findViewById(R.id.edtx);
edty = (EditText)this.findViewById(R.id.edty);
showxy = (TextView)this.findViewById(R.id.showxy);
sure = (Button)this.findViewById(R.id.sure);
cancle = (Button)this.findViewById(R.id.cancle);
showscreen();
innit();
}
public void showscreen(){
screenx = getWindowManager().getDefaultDisplay().getWidth();//获得屏幕宽度
screeny = getWindowManager().getDefaultDisplay().getHeight();//获得屏幕高度
showxy.setText("X:"+screenx+" "+"Y:"+screeny);
}
public void innit(){
View popitem = getLayoutInflater().inflate(R.layout.popwindowitem,null);
popupWindow = new PopupWindow(popitem,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);//初始化窗口
popupWindow.setFocusable(true);//
sure.setOnClickListener(new onpopsureclicklistener());
cancle.setOnClickListener(new onpopcancleclicklistener());
final EditText edtshow = (EditText)popitem.findViewById(R.id.edtshow);
Button itemsure = (Button)popitem.findViewById(R.id.itemsure);
Button itemcancle = (Button)popitem.findViewById(R.id.itemcancle);
itemsure.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String showString = edtshow.getText().toString();
if (showString != null) {
Toast.makeText(getApplicationContext(), showString, Toast.LENGTH_SHORT).show();
popupWindow.dismiss();
}else {
Toast.makeText(getApplicationContext(), "输入为空,请重新输入!", Toast.LENGTH_SHORT).show();
}
}
});
itemcancle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (popupWindow != null) {
popupWindow.dismiss();
}
}
});
}
public final class onpopsureclicklistener implements View.OnClickListener{ @Override
public void onClick(View v) {
try {
x = Integer.parseInt(edtx.getText().toString());
y = Integer.parseInt(edty.getText().toString());
popupWindow.showAtLocation(findViewById(R.id.layout), Gravity.LEFT|Gravity.TOP, x, y);
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "输入的数据无效,请重新输入!", 1).show();
}
}
}
public final class onpopcancleclicklistener implements View.OnClickListener{ @Override
public void onClick(View v) {
if (popupWindow != null) {
popupWindow.dismiss();
}
}
}
}
public class item {
private String title;
private String exp;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getExp() {
return exp;
}
public void setExp(String exp) {
this.exp = exp;
}
public item(String title, String exp) {
super();
this.title = title;
this.exp = exp;
}
public item() {
}
@Override
public String toString() {
return "item [title=" + title + ", exp=" + exp + "]";
}
}
import java.util.ArrayList;
import java.util.List;
import cn.ittest.adapter.ListAdapter;
import cn.ittest.domain.item;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast; public class ListMainActivity extends Activity{ private ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.list);
list = (ListView)this.findViewById(R.id.list);
list.setOnItemClickListener(new onItemclicklistener());
show();
}
public final class onItemclicklistener implements OnItemClickListener{ @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ListView listView = (ListView)parent;
item liItem = (item) listView.getItemAtPosition(position);
Toast.makeText(getApplicationContext(), liItem.toString(), 1).show();
}
}
public void show(){
List<item> items = new ArrayList<item>();
for (int i = 1; i <= 15; i++) {
item lItem = new item("第"+i+"个标题", "详细介绍神马!!!!!!!!!!!!!!!");
items.add(lItem);
}
ListAdapter adapter = new ListAdapter(this, items, R.layout.listitem);
list.setAdapter(adapter);
}
}





地址:http://download.csdn.net/detail/u011566000/5865305

一个自定义控件的Demo的更多相关文章

  1. ASP.NET自定义控件入门Demo

    最近看了MSDN关于自定义控件的介绍,根据官方的文档,自己学着做了一个简单的Demo给需要的朋友参考. ASP.NET 源生的TextBox是不带Label标签的,这里我要实现的是创建一个带Label ...

  2. 我的第一个 react redux demo

    最近学习react redux,先前看过了几本书和一些博客之类的,感觉还不错,比如<深入浅出react和redux>,<React全栈++Redux+Flux+webpack+Bab ...

  3. 1.类的加载机制_继承类的加载(一个小的Demo)说明

    今天我们先来一个小的Demo来了解类的加载顺序. public class ClassLoaderTest { public static void main(String[] args) { Sys ...

  4. 第一个ajax小demo

    第一个ajax小demo 文章来源:http://blog.csdn.net/magi1201/article/details/44569657

  5. [WPF 自定义控件]开始一个自定义控件库项目

    1. 目标 我实现了一个自定义控件库,并且打算用这个控件库作例子写一些博客.这个控件库主要目标是用于教学,希望通过这些博客初学者可以学会为自己或公司创建自定义控件,并且对WPF有更深入的了解. 控件库 ...

  6. 无废话WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  7. 一起来花5分钟写一个PHP入门Demo

    最近公司招了几个应届毕业生,他们对前端的了解还挺多,但是对后端的技术一无所知,我觉得,作为一个前端攻城狮,如果你有远大的抱负,就应该雨露均沾... 今天我就跟大家讲一讲PHP最基本的入门,至少别人问起 ...

  8. 使用angular.js开发的一个简易todo demo

    前沿 在CVTE实习考察的一周里,接触到了angular,并在最后的一天任务里要求使用angular做一个功能主要包括创建.编辑.恢复.删除以及留言的todo demo,并支持响应式布局.因为之前没怎 ...

  9. 他的第一个NDK的Demo

    DEMO下载链接: http://download.csdn.net/detail/logicsboy/7535409 首先给你们恶补下啥是NDK:(我从百度Copy的) NDK全称:Native D ...

随机推荐

  1. Map拷贝 关于对象深拷贝 浅拷贝的问题

    问题:map拷贝时发现数据会变化. 高能预警,你看到的下面的栗子是不正确的,后面有正确的一种办法,如果需要看的话的,请看到底,感谢各同学的提醒,已做更正,一定要看到最后      先看例子:     ...

  2. Visual Studio最常用、最高效的快捷键

    查了一些VS编程的快捷键,大家共同学习,共同进步! 1.强迫智能感知:Ctrl+J.智能感知是Visual Studio最大的亮点之一,选择Visual Studio恐怕不会没有这个原因. 2.强迫显 ...

  3. 从resfful API设计到加密算法

    众所周知,SOAP 是基于XML的webservice协议,传的数据都是xml格式的,而当下resftul设计比较火,因为快效率高,但是安全性就不及SOAP, SOAP定义了xml-security的 ...

  4. 推荐两本学习linux的经典书籍

  5. NotORM(PHP的ORM框架)

    类似Thinkphp映射到表的ORM机制. 网址:http://www.notorm.com/ <?php //require_once ‘init.php’;require_once ‘Not ...

  6. Windows下搭建NodeJS绿色版开发环境

    文章最初发布于szhshp的第三边境研究所, 转载请注明 开发背景 博客一直用的是Jekyll, 突然想玩玩NodeJS和Hexo, 于是就试着搭建一下 绿色环境, 基于Window8, 不需要管理员 ...

  7. asp.net用户自定义控件传参

    asp.net自定义控件传参的方式有2中: ①字段的方式 在自定义控件的.ascx.cs中定义一个字段,然后在调用页面的page_load方法里面传入参数. 如  在自定义控件中设置字段   publ ...

  8. 对Android开发者有益的40条优化建议

    下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题 对每个你像添加的特征重复上述过程.这种方法能够激 ...

  9. angular-ui-router中的$stateProvider设置

    $stateProvider .state('contacts.list', { url: '', templateUrl: 'contacts.list.html' }) .state('conta ...

  10. svn快速教程

    本文拷贝自网址:http://www.subversion.org.cn/?action-viewnews-itemid-1 如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关 ...